实现APP内发送邮件功能
1、在项目中导入相关架包
2、申请邮箱,进行配置
以163邮箱为例,申请账号后,设置POP3/SMTP/IMAP,并开启客户端授权密码,之后的在APP内的登录将使用邮箱地址+授权码的方式进行登录。
3、发送邮件的代码实现
/**
* @author Jeff
* @describe
* @date 2018/5/9.
*/
public class EmailUtils {
public static void sendEmail(String title, String content) {
new EmailTask().execute(title,content);
}
/**
* 执行发送邮件的
*/
static class EmailTask extends AsyncTask<String,Integer,Boolean> {
@Override
protected void onPreExecute() {
super.onPreExecute();
//开始发送邮件
}
@Override
protected Boolean doInBackground(String... params) {
try {
Properties props = System.getProperties();
props.put("mail.smtp.host", "smtp.163.com");
props.put("mail.smtp.auth", "true");
Session session = Session.getInstance(props, null);
Transport transport = session.getTransport("smtp");
transport.connect("smtp.163.com", 25, BuildConfig.BUG_REPORT_EMAIL,
BuildConfig.EMAIL_KEY);//授权码
Message mailMessage = new SMTPMessage(session);
Address from = new InternetAddress(BuildConfig.BUG_REPORT_EMAIL);
mailMessage.setFrom(from);
Address to = new InternetAddress(BuildConfig.BUG_REPORT_EMAIL);
mailMessage.setRecipient(Message.RecipientType.TO, to);
mailMessage.setSubject(params[0]);
mailMessage.setSentDate(new Date());
mailMessage.setText(params[1]);
transport.sendMessage(mailMessage, mailMessage.getAllRecipients());
return true;
} catch (MessagingException ex) {
ex.printStackTrace();
}
return false;
}
@Override
protected void onProgressUpdate(Integer... progresses) {
super.onProgressUpdate();
//更新进度信息
}
@Override
protected void onPostExecute(Boolean aBoolean) {
super.onPostExecute(aBoolean);
//执行完后台任务后更新UI,显示结果
}
@Override
protected void onCancelled() {
super.onCancelled();
//在取消执行中的任务时更改UI
}
}
}