Send e-mail in Android without user interacton

前端 未结 2 585
感情败类
感情败类 2021-01-31 23:02

I would like to send an e-mail in my app using whatever default mail provider the user already has setup. It must be possible to send the e-mail without requiring any user inter

2条回答
  •  日久生厌
    2021-01-31 23:42

    Try this code...

    public class SendAttachment{
                            public static void main(String [] args){ 
                     //to address
                            String to="abc@abc.com";//change accordingly
                            //from address
                            final String user="efg@efg.com";//change accordingly
                            final String password="password";//change accordingly 
                             MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
                           mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
                          mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
                          mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
                          mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
                          mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
                          CommandMap.setDefaultCommandMap(mc); 
                          //1) get the session object   
                          Properties properties = System.getProperties();
                          properties.put("mail.smtp.port", "465"); 
                          properties.put("mail.smtp.host", "smtp.gmail.com");
                            properties.put("mail.smtp.socketFactory.port", "465");
                            properties.put("mail.smtp.socketFactory.class",
                                    "javax.net.ssl.SSLSocketFactory");
                            properties.put("mail.smtp.auth", "true");
                            properties.put("mail.smtp.port", "465");
    
                          Session session = Session.getDefaultInstance(properties,
                           new javax.mail.Authenticator() {
                           protected PasswordAuthentication getPasswordAuthentication() {
                           return new PasswordAuthentication(user,password);
                           }
                          });
    
                          //2) compose message   
                          try{ 
                            MimeMessage message = new MimeMessage(session);
                            message.setFrom(new InternetAddress(user));
                            message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
                            message.setSubject("Hii"); 
                            //3) create MimeBodyPart object and set your message content    
                            BodyPart messageBodyPart1 = new MimeBodyPart();
                            messageBodyPart1.setText("How is This"); 
                            //4) create new MimeBodyPart object and set DataHandler object to this object    
                            MimeBodyPart messageBodyPart2 = new MimeBodyPart();
                        //Location of file to be attached
                            String filename = Environment.getExternalStorageDirectory().getPath()+"/R2832.zip";//change accordingly
                            DataSource source = new FileDataSource(filename);
                            messageBodyPart2.setDataHandler(new DataHandler(source));
                            messageBodyPart2.setFileName("Hello"); 
                            //5) create Multipart object and add MimeBodyPart objects to this object    
                            Multipart multipart = new MimeMultipart();
                            multipart.addBodyPart(messageBodyPart1);
                            multipart.addBodyPart(messageBodyPart2); 
                            //6) set the multiplart object to the message object
                            message.setContent(multipart ); 
                            //7) send message 
                            Transport.send(message); 
                           System.out.println("MESSAGE SENT....");
                           }catch (MessagingException ex) {ex.printStackTrace();}
                          }
                        }
    

提交回复
热议问题