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
        }
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值