I am working on android app, there is a page Forgot password . when user clicks on it, app just verify his entered email and send password to that email. Mean, i just want to send private email from android application,
I already have done work with JavaMail Api, sending email from my gmail account, but it is not a good way to do, because gmail block the mail account, if it is accessed from multiple countries at same time etc. (consider the mail as spam and blocked it)
Is there any authenticated and good way to get this done?
Thanks
Use the below code to send an E-Mail in Background.
public class EmailGengerator extends javax.mail.Authenticator {
private String _user;
private String _pass;
private String[] _to;
private String _from;
private final String _port;
private final String _sport;
private final String _host;
private String _subject;
private String _body;
private final boolean _auth;
private final boolean _debuggable;
private final Multipart _multipart;
private final Context context;
private Properties props ;
private MimeMessage msg;
private Session session;
private boolean status;
/**
* Public Constructor.
* @param context
*/
public EmailGengerator(Context context) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
this.context=context;
_host = "smtp.gmail.com"; // default smtp server
_port = "465"; // default smtp port
_sport = "465"; // default socketfactory port
status = false;
_user = ""; // username
_pass = ""; // password
_from = ""; // email sent from
_subject = ""; // email subject
_body = ""; // email body
_debuggable = false; // debug mode on or off - default off
_auth = true; // smtp authentication - default on
_multipart = new MimeMultipart();
// There is something wrong with MailCap, javamail can not find a
// handler for the multipart/mixed part, so this bit needs to be added.
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);
}
public EmailGengerator(Context context,String user, String pass) {
this(context);
_user = user;
_pass = pass;
}
/**
* Function will handle the Sending Part,
* @return
* @throws Exception
*/
public boolean send() {
try{
props = _setProperties();
session = Session.getInstance(props, this);
msg = new MimeMessage(session);
if (!_user.equals("") && !_pass.equals("") && _to.length > 0
&& !_from.equals("") && !_subject.equals("")
&& !_body.equals("")) {
msg.setFrom(new InternetAddress(_from));
InternetAddress[] addressTo = new InternetAddress[_to.length];
for (int i = 0; i < _to.length; i++) {
addressTo[i] = new InternetAddress(_to[i]);
}
msg.setRecipients(MimeMessage.RecipientType.TO, addressTo);
msg.setSubject(_subject);
msg.setSentDate(new Date());
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(_body);
_multipart.addBodyPart(messageBodyPart);
// Put parts in message
msg.setContent(_multipart);
// send email
Transport.send(msg);
status=true;
}else {
status =false;
}
}catch(Exception ee){
((Activity)this.context).finish();
ee.printStackTrace();
}
return status;
}
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(_user, _pass);
}
private Properties _setProperties() {
Properties props = new Properties();
props.put("mail.smtp.host", _host);
if (_debuggable) {
props.put("mail.debug", "true");
}
if (_auth) {
props.put("mail.smtp.auth", "true");
}
props.put("mail.smtp.port", _port);
props.put("mail.smtp.socketFactory.port", _sport);
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
return props;
}
// the getters and setters
public String getBody() {
return _body;
}
public void setBody(String _body) {
this._body = _body;
}
public void setTo(String[] toArr) {
this._to = toArr;
}
public void setFrom(String string) {
this._from = string;
}
public void setSubject(String string) {
this._subject = string;
}
public void sendEmail(Context context, String toAddress) {
/**
* Setting Mail Creator.
*/
EmailGengerator m = new EmailGengerator(context,"your mail id",
"your password");
String[] toArr = { toAddress };
m.setTo(toArr);
m.setFrom("your mail id");
m.setSubject(your subject);
m.setBody("message");
m.send(); }
}
Note: You need to add Mail.Jar and Activation.jar for this code to work.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.