artbits/android-mail

Android9系统,发送不了,这是什么问题

Carl224 opened this issue · 5 comments

Android9系统,发送不了,这是什么问题

你好,我测试使用的真机系统正是Android 9.0,一直都可以正常发送。你可以详细提供一下发送失败的提示和使用什么邮箱吗?还有发送时使用的是WiFi还是移动网络?

这位朋友,你好!刚刚我新建一个项目测试了一下,可以成功发送邮件。我测试的机型一台是Android 9.0的小米6,另一台是Android 7.1.2的小米5c。不知道你所说的发送不成功是指发送时应用崩溃,还是发送时无法连接上邮件服务器?

或者你可以试试我的测试代码

AndroidManifest.xml

<!--获取联网权限-->
<uses-permission android:name="android.permission.INTERNET"/>
<!--获取读写存储空间权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Java

//初始化框架
Email.initialize(this);

//配置邮件服务器参数
Email.Config config = new Email.Config()
        .setMailType(Email.MailType.FOXMAIL)     //邮箱类型
        .setAccount("zguanhu@foxmail.com")       //我的邮箱
        .setPassword("********");                //我的邮箱授权码

//发送一封邮件
Email.getSendService(config)
        .setTo("zguanhu@outlook.com")           //收件人的邮箱
        .setNickname("小学生")                  //我的昵称
        .setSubject("发送邮件测试")              //主题
        .setText("Hello World !")              //正文
        .send(new Email.GetSendCallback() {
            @Override
            public void onSuccess() {
                Log.d("oversee", "发送成功!");
            }

            @Override
            public void onFailure(String msg) {
                Log.d("oversee", msg);
            }
        });

你好!其实你使用163邮箱时无需自己配置邮件服务器的地址和端口,你只需使用框架的快速配置即可。同时,记得先去163邮箱官网登录你的邮件,点击“设置” -> “POP3/SMTP/IMAP”,然后勾选“POP3/SMTP服务”或“IMAP/SMTP服务”。

示例代码如下:

//初始化框架
Email.initialize(this);

//配置邮件服务器参数
Email.getGlobalConfig()
        .setMailType(Email.MailType.$163)      //选择我的邮箱类型,163邮箱
        .setAccount("guanhudev@163.com")       //我的邮箱
        .setPassword("**********");            //我的邮箱授权码

//发送一封邮件
Email.getSendService()
        .setTo("zguanhu@outlook.com")
        .setNickname("小学生")
        .setSubject("发送邮件测试")
        .setText("Hello World !")
        .send(new Email.GetSendCallback() {
            @Override
            public void onSuccess() {
                Log.d("oversee", "发送成功!");
            }

            @Override
            public void onFailure(String msg) {
                Log.d("oversee", msg);
            }
        });