JavaMail API不适用于移动数据,但适用于Wifi
我现在的处境很奇怪。有关完整代码,请参见: 我使用此代码发送电子邮件。但问题就在前面。在WIFI上使用此方法发送邮件时,我的成功率为100%。但当我使用移动数据(4G)时,我的成功率约为30%。在某些设备上,它根本不起作用。4G连接没有问题。它没有波动。很好用。我在多台设备上尝试了Wi-Fi和移动数据。一切都表明移动数据上的代码存在一些问题 目前,在我的调试设备上,这是移动数据,代码正在工作。因此,我现在不能发布logcat。但很多时候,它甚至不能在调试设备上工作。但现在既然它起作用了,我不能发布logcat。最有可能的是,这段代码中存在一些问题:JavaMail API不适用于移动数据,但适用于Wifi,java,android,email,jakarta-mail,Java,Android,Email,Jakarta Mail,我现在的处境很奇怪。有关完整代码,请参见: 我使用此代码发送电子邮件。但问题就在前面。在WIFI上使用此方法发送邮件时,我的成功率为100%。但当我使用移动数据(4G)时,我的成功率约为30%。在某些设备上,它根本不起作用。4G连接没有问题。它没有波动。很好用。我在多台设备上尝试了Wi-Fi和移动数据。一切都表明移动数据上的代码存在一些问题 目前,在我的调试设备上,这是移动数据,代码正在工作。因此,我现在不能发布logcat。但很多时候,它甚至不能在调试设备上工作。但现在既然它起作用了,我不能发
try {
Transport transport = mailSession.getTransport("smtp");
transport.connect(emailHost, fromEmail, fromPassword);
Log.i("GMail", "allrecipients: " + emailMessage.getAllRecipients());
transport.sendMessage(emailMessage, emailMessage.getAllRecipients());
transport.close();
Log.i("GMail", "Email sent successfully.");
}catch (Exception e){
}
在阅读其他人的帖子时,我发现代理设置可能存在一些问题。但是在代码中,我不知道在哪里可以使用代理。完整的代码可以在上面的链接中找到。我没有修改(除了添加我自己的电子邮件和密码)
以下是故障日志:
08-09 19:29:54.594 9551-9551/com.parassidhu.cdlumaths I/SendMailActivity: Send Button Clicked.
08-09 19:29:54.594 9551-9551/com.parassidhu.cdlumaths I/SendMailActivity: To List: [cdludeubg@gmail.com]
08-09 19:29:54.654 9551-9893/com.parassidhu.cdlumaths I/d: About to instantiate GMail...
08-09 19:29:54.668 9551-9893/com.parassidhu.cdlumaths I/GMail: Mail server properties set.
[ 08-09 19:29:54.677 9551: 9893 W/ ]
Unable to open '/system/framework/WfdCommon.jar': No such file or directory
08-09 19:29:55.000 9551-9893/com.parassidhu.cdlumaths I/GMail: toEmail: cdludebug@gmail.com
08-09 19:29:55.099 9551-9893/com.parassidhu.cdlumaths I/GMail: Email Message created.
08-09 19:29:58.393 9551-9893/com.parassidhu.cdlumaths I/Error: sendEmail: null
08-09 19:29:58.393 9551-9893/com.parassidhu.cdlumaths I/com.downloadinformer: Mail Sent.
08-09 19:29:54.594 9551-9551/com.parassidhu.cdlumath I/SendMailActivity:单击发送按钮。
08-09 19:29:54.594 9551-9551/com.parassidhu.cdlumath I/SendMailActivity:要列出:[cdludeubg@gmail.com]
08-09 19:29:54.654 9551-9893/com.parassidhu.cdlumath I/d:即将实例化GMail。。。
08-09 19:29:54.668 9551-9893/com.parassidhu.cdlumath I/GMail:邮件服务器属性集。
[08-09 19:29:54.6779551:9893 W/]
无法打开“/system/framework/WfdCommon.jar”:没有这样的文件或目录
08-09 19:29:55.000 9551-9893/com.parassidhu.cdlumath I/GMail:toEmail:cdludebug@gmail.com
08-09 19:29:55.099 9551-9893/com.parassidhu.cdlumath I/GMail:已创建电子邮件。
08-09 19:29:58.393 9551-9893/com.parassidhu.cdlumath I/错误:sendmail:null
08-09 19:29:58.393939551-9893/com.parassidhu.cdlumath I/com.download告密者:邮件已发送。
编辑2
在另一台设备上,我得到的日志是:
08-10 17:44:58.911 32384-32384/com.parassidhu.cdlumaths I/SendMailActivity: Send Button Clicked.
08-10 17:44:58.911 32384-32384/com.parassidhu.cdlumaths I/SendMailActivity: To List: [cdludeubg@gmail.com]
08-10 17:44:58.922 32384-1140/com.parassidhu.cdlumaths I/d: About to instantiate GMail...
08-10 17:44:58.930 32384-1140/com.parassidhu.cdlumaths I/GMail: Mail server properties set.
08-10 17:44:59.027 32384-1140/com.parassidhu.cdlumaths I/GMail: toEmail: cdludebug@gmail.com
08-10 17:44:59.088 32384-1140/com.parassidhu.cdlumaths I/GMail: Email Message created.
08-10 17:44:59.095 32384-1140/com.parassidhu.cdlumaths D/libc-netbsd: [getaddrinfo]: hostname=smtp.gmail.com; servname=(null); cache_mode=(null), netid=0; mark=0
08-10 17:44:59.095 32384-1140/com.parassidhu.cdlumaths D/libc-netbsd: [getaddrinfo]: hostname=smtp.gmail.com; servname=(null); cache_mode=(null), netid=0; mark=0
08-10 17:44:59.208 32384-1140/com.parassidhu.cdlumaths D/libc-netbsd: getaddrinfo: smtp.gmail.com get result from proxy >>
08-10 17:44:59.219 32384-1140/com.parassidhu.cdlumaths I/System.out: [socket][0] connection smtp.gmail.com/2404:6800:4003:c00::6c:587;LocalPort=44496(0)
08-10 17:44:59.219 32384-1140/com.parassidhu.cdlumaths I/System.out: [CDS]connect[smtp.gmail.com/2404:6800:4003:c00::6c:587] tm:90
08-10 17:45:02.079 32384-1140/com.parassidhu.cdlumaths D/libc-netbsd: [getaddrinfo]: hostname=smtp.gmail.com; servname=(null); cache_mode=(null), netid=0; mark=0
08-10 17:45:02.079 32384-1140/com.parassidhu.cdlumaths D/libc-netbsd: [getaddrinfo]: hostname=smtp.gmail.com; servname=(null); cache_mode=(null), netid=0; mark=0
08-10 17:45:02.083 32384-1140/com.parassidhu.cdlumaths D/libc-netbsd: getaddrinfo: smtp.gmail.com get result from proxy >>
08-10 17:45:02.084 32384-1140/com.parassidhu.cdlumaths I/Error: sendEmail: null
08-10 17:44:58.911 32384-32384/com.parassidhu.cdlumath I/sendmail活动:单击发送按钮。
08-10 17:44:58.911 32384-32384/com.parassidhu.cdlumath I/SendMailActivity:要列出:[cdludeubg@gmail.com]
08-10 17:44:58.922 32384-1140/com.parassidhu.cdlumath I/d:即将实例化GMail。。。
08-10 17:44:58.930 32384-1140/com.parassidhu.cdlumath I/GMail:邮件服务器属性集。
08-10 17:44:59.027 32384-1140/com.parassidhu.cdlumath I/GMail:toEmail:cdludebug@gmail.com
08-10 17:44:59.088 32384-1140/com.parassidhu.cdlumath I/GMail:已创建电子邮件。
08-10 17:44:59.095 32384-1140/com.parassidhu.cdlumath D/libc netbsd:[getaddrinfo]:hostname=smtp.gmail.com;servname=(null);cache_mode=(null),netid=0;马克=0
08-10 17:44:59.095 32384-1140/com.parassidhu.cdlumath D/libc netbsd:[getaddrinfo]:hostname=smtp.gmail.com;servname=(null);cache_mode=(null),netid=0;马克=0
08-10 17:44:59.208 32384-1140/com.parassidhu.cdlumath D/libc netbsd:getaddrinfo:smtp.gmail.com从代理获取结果>>
08-10 17:44:59.219 32384-1140/com.parassidhu.cdlumath I/System.out:[socket][0]连接smtp.gmail.com/2404:6800:4003:c00::6c:587;LocalPort=44496(0)
08-10 17:44:59.219 32384-1140/com.parassidhu.cdlumath I/System.out:[CDS]connect[smtp.gmail.com/2404:6800:4003:c00::6c:587]tm:90
08-10 17:45:02.079 32384-1140/com.parassidhu.cdlumath D/libc netbsd:[getaddrinfo]:hostname=smtp.gmail.com;servname=(null);cache_mode=(null),netid=0;马克=0
08-10 17:45:02.079 32384-1140/com.parassidhu.cdlumath D/libc netbsd:[getaddrinfo]:hostname=smtp.gmail.com;servname=(null);cache_mode=(null),netid=0;马克=0
08-10 17:45:02.083 32384-1140/com.parassidhu.cdlumath D/libc netbsd:getaddrinfo:smtp.gmail.com从代理获取结果>>
08-10 17:45:02.084 32384-1140/com.parassidhu.cdlumath I/错误:sendmail:null
一定是关于邮件服务器上的身份验证。仅仅使用默认的android电子邮件应用程序,我仍然无法通过移动数据访问我的电子邮件服务器,而且它是一个具有奇怪身份的旧服务器。仔细检查服务器端的身份验证设置。在我的测试中,我意识到当我将手机的首选网络类型从4G更改为3G时,它会工作,然后当我从3G更改为4G时,它会继续工作。在我的应用程序中,我解决了这个问题,我认为这是smtp.gmail.com的问题 解决方案: 要创建Outlook电子邮件并放置数据库配置,请执行以下操作:
- SMTP服务器名称SMTP-mail.outlook.com
- SMTP端口587
- SMTP加密方法TLS
try { String prot = "smtp"; final String user = "MyEmailAdress@outlook.com"; String to = "anotherEmail@outlook.com"; final String pass = "MYpassword"; String mailhost = "smtp-mail.outlook.com"; Properties props = System.getProperties(); props.put("mail." + prot + ".host", mailhost); props.put("mail." + prot + ".auth", "true"); props.put("mail." + prot + ".starttls.enable", "true"); props.put("mail." + prot + ".port", "587"); props.put("mail." + prot + ".ssl.enable", "false"); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user, pass); } }); session.setDebug(true); Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress(user)); msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false)); msg.setSubject("TESTE ENVIO EMAIL"); msg.setText("Teste de envio de email conteudo"); msg.setHeader("X-Mailer", user); msg.setSentDate(new Date()); SMTPTransport t = (SMTPTransport) session.getTransport(prot); t.connect(mailhost, user, pass); t.sendMessage(msg, msg.getAllRecipients()); t.close(); Log.d("envio de email", "enviado"); } catch (Exception e) { Log.e("Erro", "actionbt1", e); }
(在第一个下拉列表中选择“邮件”选项,并在第二个下拉列表中使用“其他”选项插入应用程序的名称或您喜欢的任何其他名称)这是另一种方法。但我想做一个点击发送选项。比如“竖起大拇指”。然后用户不想打开电子邮件客户端。应该有一个点击发送选项。你能签入代码并告诉我吗?对不起,我只是告诉你我在这个问题上的经历,没有更多的见解…你真的需要在调试失败时发布调试输出。如果你能描述出失败和成功时的区别,这会有所帮助。你以前是吗