Android9系统,发送不了,这是什么问题
Carl224 opened this issue · 5 comments
Carl224 commented
Android9系统,发送不了,这是什么问题
artbits commented
你好,我测试使用的真机系统正是Android 9.0,一直都可以正常发送。你可以详细提供一下发送失败的提示和使用什么邮箱吗?还有发送时使用的是WiFi还是移动网络?
Carl224 commented
我是把发送邮件写在了,全局异常监听里面了,低版本下的系统应用崩溃可以正常发送,但是高系统的就不行
…------------------ 原始邮件 ------------------
发件人: "张观湖"<notifications@github.com>;
发送时间: 2019年9月25日(星期三) 晚上8:37
收件人: "mailhu/email"<email@noreply.github.com>;
抄送: "无辜路人甲"<2391164772@qq.com>;"Author"<author@noreply.github.com>;
主题: Re: [mailhu/email] Android9系统,发送不了,这是什么问题 (#6)
你好,我测试使用的真机系统正是Android 9.0,一直都可以正常发送。你可以详细提供一下发送失败的提示和使用什么邮箱吗?还有发送时使用的是WiFi还是移动网络?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.
artbits commented
这位朋友,你好!刚刚我新建一个项目测试了一下,可以成功发送邮件。我测试的机型一台是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);
}
});
Carl224 commented
static {
//自定义配置
Email.getGlobalConfig()
.setSMTP("smtp.163.com", 465, true) //设置SMTP发件服务器主机地址、端口和是否开启ssl
// .setIMAP("imap.qq.com", 993, true) //设置IMAP收件服务器主机地址、端口和是否开启ssl
// .setPOP3("pop.qq.com", 995, true) //设置POP3收件服务器主机地址、端口和是否开启ssl
.setAccount("18401663375@163.com") //发件人的邮箱
.setPassword("****************"); //发件人邮箱的密码或者授权码
CRASH_HEAD = "\n************* Crash Log Head ****************" +
"\nDevice Manufacturer: " + Build.MANUFACTURER +// 设备厂商
"\nDevice Model : " + Build.MODEL +// 设备型号
"\n设备序列号 : " + Build.SERIAL +
"\nAndroid Version : " + Build.VERSION.RELEASE +// 系统版本
"\nAndroid SDK : " + Build.VERSION.SDK_INT +// SDK版本
"\nApp VersionName : " + versionName +
"\nApp VersionCode : " + versionCode +
"\n************* Crash Log Head ****************\n\n";
DEFAULT_UNCAUGHT_EXCEPTION_HANDLER = Thread.getDefaultUncaughtExceptionHandler();
UNCAUGHT_EXCEPTION_HANDLER = new UncaughtExceptionHandler() {
@OverRide
public void uncaughtException(final Thread t, final Throwable e) {
if (e == null) {
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
return;
}
Date now = new Date(System.currentTimeMillis());
String fileName = FORMAT.format(now) + ".txt";
final String fullPath = (dir == null ? mCrashDirPath : dir) + fileName;
if (!createOrExistsFile(fullPath)) {
return;
}
if (sExecutor == null) {
sExecutor = Executors.newSingleThreadExecutor();
}
sExecutor.execute(new Runnable() {
@OverRide
public void run() {
PrintWriter pw = null;
StringBuffer sb = new StringBuffer(CRASH_HEAD);//CRASH_HEAD
try {
pw = new PrintWriter(new FileWriter(fullPath, false));
pw.write(CRASH_HEAD);
StackTraceElement[] stackTrace = e.getStackTrace();
sb.append(e + "\n");
for (StackTraceElement traceElement : stackTrace)
sb.append("\tat " + traceElement + "\n");
e.printStackTrace(pw);
Throwable cause = e.getCause();
while (cause != null) {
sb.append(cause + "\n");
for (StackTraceElement traceElement : cause.getStackTrace())
sb.append("\tat " + traceElement.toString() + "\n");
cause.printStackTrace(pw);
cause = cause.getCause();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
sendEmail(FORMAT.format(System.currentTimeMillis()), sb.toString());
if (pw != null) {
pw.close();
}
}
}
});
if (DEFAULT_UNCAUGHT_EXCEPTION_HANDLER != null) {
DEFAULT_UNCAUGHT_EXCEPTION_HANDLER.uncaughtException(t, e);
}
}
};
}
public static void sendEmail(String title, String content) {
Email.getSendService() //已设置全局配置后,无需再传入参数config
.setTo("18401663375@163.com") //收件人的邮箱地址
// .setCc("cc@qq.com") //抄送人的邮箱地址(非必选)
// .setBcc("bcc@qq.com") //密送人的邮箱地址(非必选)
.setNickname("龙宝小掌门") //设置发信人的昵称
.setSubject(title) //邮件主题
.setText(content) //邮件正文,若是发送HTML类型的正文用setContent()
.send(new Email.GetSendCallback() {
@OverRide
public void onSuccess() {
Log.i("Email", "发送成功!");
}
@OverRide
public void onFailure(String msg) {
Log.i("Email", "错误信息:" + msg);
}
});
}
…------------------ 原始邮件 ------------------
发件人: "张观湖"<notifications@github.com>;
发送时间: 2019年9月26日(星期四) 晚上6:15
收件人: "mailhu/email"<email@noreply.github.com>;
抄送: "无辜路人甲"<2391164772@qq.com>;"Author"<author@noreply.github.com>;
主题: Re: [mailhu/email] Android9系统,发送不了,这是什么问题 (#6)
这位朋友,你好!刚刚我新建一个项目测试了一下,可以成功发送邮件。我测试的机型一台是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); } });
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.
artbits commented
你好!其实你使用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);
}
});