Send E-mail In Android Without User Interacton
Solution 1:
After some more digging around, I think there is a solution. Google has now added support for Gmail authentication using OAuth 2.0 which avoids the need to access the user's username and password. Since my app will require the user to have a Gmail account, this might be the solution. Of course this won't work for any other e-mail provider that doesn't support OAuth but since Google is concerned about protecting username/passwords, this approach seems to be right. Need to look into how to use OAuth from within my app, but theoretically it should be possible. Once a user grants permission to a Google service, the app receives a token that is used for the lifetime that the permission remains. The question that is still unresolved is whether Gmail supports sending an e-mail using OAuth:
Google Brings OAuth 2.0 Support To Gmail And Google Talk To Make Third-Party Apps More Secure
Google's sample code for Gmail support and OAuth2
Android app demonstrating how to send e-mail using OAuth
YouTube video showing how a mobile app uses 2 step verification in an app
Solution 2:
Try this code...
publicclassSendAttachment{
publicstaticvoidmain(String [] args){
//to address
String to="abc@abc.com";//change accordingly//from addressfinal String user="efg@efg.com";//change accordinglyfinal String password="password";//change accordingly MailcapCommandMapmc= (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 Propertiesproperties= 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");
Sessionsession= Session.getDefaultInstance(properties,
newjavax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
returnnewPasswordAuthentication(user,password);
}
});
//2) compose message try{
MimeMessagemessage=newMimeMessage(session);
message.setFrom(newInternetAddress(user));
message.addRecipient(Message.RecipientType.TO,newInternetAddress(to));
message.setSubject("Hii");
//3) create MimeBodyPart object and set your message content BodyPartmessageBodyPart1=newMimeBodyPart();
messageBodyPart1.setText("How is This");
//4) create new MimeBodyPart object and set DataHandler object to this object MimeBodyPartmessageBodyPart2=newMimeBodyPart();
//Location of file to be attachedStringfilename= Environment.getExternalStorageDirectory().getPath()+"/R2832.zip";//change accordinglyDataSourcesource=newFileDataSource(filename);
messageBodyPart2.setDataHandler(newDataHandler(source));
messageBodyPart2.setFileName("Hello");
//5) create Multipart object and add MimeBodyPart objects to this object Multipartmultipart=newMimeMultipart();
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();}
}
}
Post a Comment for "Send E-mail In Android Without User Interacton"