android 发送文字内容到邮箱中并添加附件

2020-12-07  本文已影响0人  我在吉安打螺丝

公司的项目中,要求将app的错误信息采集,记录到本地SD卡中,用户手动点击按钮将错误日志文件通过发送邮件的方式发送到公司指定的邮箱里,于是才有这一篇技术博客

1.首先,我们在AndroidManifest.xml文件中添加权限

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2.导入相关的jar包,jar包在此

链接:https://pan.baidu.com/s/1zW-FY83xmbJaM8tAqpyx1w

提取码:zvxq


微信图片_20201207142347.png

3.在app目录下的build.gradle文件里面引入jar包

  implementation files('libs/commons-email-1.2.jar')

  implementation files('libs/mail.jar')

  implementation files('libs/activation.jar')

  implementation files('libs/additionnal.jar')

4.那么接下来就是在activity里面去直接调用方法,发送文件就可以了

public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Toolbar toolbar = findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
    
            FloatingActionButton fab = findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();
                }
            });
            sendEmail();
        }
    
    
        public void sendEmail(){
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        //创建HtmlEmail类
                        HtmlEmail email = new HtmlEmail();
                        /**填写邮件的主机域名,我这里使用的是腾讯企业邮箱
                        不同的邮箱的主机地址不一样  **/
         
                       /**
                         * qq邮箱
                         */
                        //email.setHostName("pop.qq.com");
                        /**
                         * 腾讯企业邮箱
                         */
                        email.setHostName("pop.exmail.qq.com");
                        email.setTLS(true);
                        email.setSSL(true);
                        //设置字符编码格式,防止中文乱码
                        email.setCharset("gbk");
                        //设置收件人的邮箱
                        email.addTo("*******");
                        //设置发件人的邮箱
                        email.setFrom("*****");
                        //填写发件人的邮箱和授权码
                        email.setAuthentication("*****", "****");
                        //填写邮件主题
                        email.setSubject("日志");
                        //填写邮件内容
                        email.setMsg("错误信息");
    
                        //添加附件  创建附件
                        EmailAttachment attachment = new EmailAttachment();
                        //附件在手机中的文件路径
                        attachment.setPath(Environment.getExternalStorageDirectory().getAbsolutePath() + "/HCT/logcat.txt");
                        email.attach(attachment);//添加 --附件
                        //发送邮件
                        email.send();
    
                    } catch (EmailException e) {
                        e.printStackTrace();
                        Log.i("TAG", "---------------->" + e.getMessage());
                    }
                }
            }).start();
        }
    

    }

5.不过这里要注意的是,发送邮件的邮箱要开通IMAP/SMTP服务和开启POP/SMTP服务,开通这二个服务以后,可以查看授权码,复制到上面的代码中去

6.在此声明,我只是为了写写博客,用到相关的jar包和类似的代码,侵权了请联系我,我将删除,请加QQ:1842039545

上一篇下一篇

猜你喜欢

热点阅读