APP内发送邮件

实现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
        }
    }
}

猜你喜欢

转载自blog.csdn.net/sinat_34383316/article/details/80927365