Android:实现主动发送邮件(附件+内容)

按步骤来,首先dependencies引入,最新好像是1.6.7

    implementation 'com.sun.mail:android-mail:1.6.0'
    implementation 'com.sun.mail:android-activation:1.6.0'
新建两个类

public class EmailSend {

    private static String _HOST = "smtp.qq.com";


    public static boolean SendEmail(String _FileUrl) {

        Properties props = new Properties();
        props.put("mail.smtp.protocol", "smtp");
        props.put("mail.smtp.auth", "true");//设置要验证
        props.put("mail.smtp.host", _HOST);//设置host
        props.put("mail.smtp.port", "25");  //设置端口
        PassAuthenticator pass = new PassAuthenticator();   //获取帐号密码
        Session session = Session.getInstance(props, pass); //获取验证会话
        try {
            //配置发送及接收邮箱
            InternetAddress fromAddress, toAddress;
            /**
             * 这个地方需要改成自己的邮箱
             */
            fromAddress = new InternetAddress(GlobeFile.FROMEMAIL);
            toAddress = new InternetAddress(GlobeFile.TOEMAIL);
            /**
             * 一下内容是:发送邮件时添加附件
             */
            MimeBodyPart attachPart = new MimeBodyPart();
            FileDataSource fds = new FileDataSource(_FileUrl); //打开要发送的文件

            attachPart.setDataHandler(new DataHandler(fds));
            attachPart.setFileName(fds.getName());
            Log.e("EmailSend",attachPart.getFileName());
            MimeMultipart allMultipart = new MimeMultipart("mixed"); //附件
            allMultipart.addBodyPart(attachPart);//添加

       //设置邮件的正文
            MimeBodyPart content = new MimeBodyPart();// 邮件的正文
            content.setContent("附带的内容", "text/plain;charset=UTF-8");//指定正文,网络图片

            allMultipart.addBodyPart(content);//添加正文

            //配置发送信息
            MimeMessage message = new MimeMessage(session);
            //message.setContent("test", "text/plain");
            message.setContent(allMultipart); //发邮件时添加附件
            message.setSubject("Wenlong Yang");//标题可以写自己公司或者方便辨别的名字
            message.setFrom(fromAddress);
            message.addRecipient(javax.mail.Message.RecipientType.TO, toAddress);
            message.saveChanges();
            //连接邮箱并发送
            Transport transport = session.getTransport("smtp");
            /**
             * 这个地方需要改称自己的账号和密码
             */
            transport.connect(_HOST, GlobeFile.FROMEMAIL, GlobeFile.FROMPASSWORD);
            transport.send(message);
            transport.close();
            return true;
        } catch (Exception e) {
            Log.e("sendmail", e.toString());
            return false;
        }

    }
}

public class PassAuthenticator extends Authenticator {
    public PasswordAuthentication getPasswordAuthentication() {
        /**
         * 这个地方需要添加上自己的邮箱的账号和密码
         */
        String username = GlobeFile.FROMEMAIL;
        String pwd = GlobeFile.FROMPASSWORD;
        return new PasswordAuthentication(username, pwd);
    }
}

 全局项目文件里面的对应

//LOG发送的邮箱地址
public static final String FROMEMAIL = "我的@qq.com";
public static final String FROMPASSWORD = "授权码";
//LOG接收的邮箱地址
public static final String TOEMAIL = "收件@gmail.com";

 最后就是使用,这个使用需要开一个子线称

例如

    new Thread(new Runnable(){
                                    @Override
                                    public void run() {
                                        if (EmailSend.SendEmail(GlobeFile.LOG_PATH_SDCARD_DIR + filename.getText().toString())) {
                                         
                                            Log.e("tmp_composite:", "上报成功");
                                            uiShow("日志上报成功");
                                        } else {
                                         
                                            Log.e("tmp_composite:", "上报失败");
                                            uiShow("日志上报失败");
                                        }
                                    }
                                }).start();

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wenlong Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值