Android 发送自定义电子邮件 STARTTLS 端口 587
Posted
技术标签:
【中文标题】Android 发送自定义电子邮件 STARTTLS 端口 587【英文标题】:Android send custom email STARTTLS port 587 【发布时间】:2015-06-16 17:20:43 【问题描述】:我需要使用客户端设置发送电子邮件。使用端口 587 访问主机使用 STARTTLS 安全性。 使用以下代码进行测试(为安全起见更改了客户数据):
String host = "zimbra.mydomain.net.br";
String port = "587";
String address = "mail@mydomain.net.br";
String pass = "******";
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.quitwait", "false");
props.put("mail.smtp.host", host);
props.put("mail.smtp.user", address);
props.put("mail.smtp.password", pass);
props.put("mail.smtp.port", port);
props.put("mail.smtp.ssl.trust", "*");
Session session = Session.getDefaultInstance(props, null);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(address));
Multipart multiPart=new MimeMultipart();
InternetAddress toAddress = new InternetAddress("rnn2@live.com");
message.addRecipient(Message.RecipientType.TO, toAddress);
message.setSubject("Send Auto-Mail");
message.setContent(multiPart);
message.setText("Demo For Sending Mail in android Automatically");
Transport transport = session.getTransport("smtp");
transport.connect(host, address, pass);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
例外:
javax.mail.SendFailedException:无效地址; 嵌套异常是: com.sun.mail.smtp.SMTPAddressFailedException:554 5.7.1 unknown[000.000.000.00]:客户端主机被拒绝:访问被拒绝
-- 编辑--
调试:getProvider() 返回 javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc.,1.4.1] 调试 SMTP:useEhlo true,useAuth false 调试 SMTP:尝试连接到主机“zimbra.myclientaddress.net.br”,端口 587,isSSL false 220 zimbra.myclientaddress.net.br ESMTP 后缀 调试 SMTP:连接到主机“zimbra.myclientaddress.net.br”,端口:587 EHLO 本地主机 250-zimbra.myclientaddress.net.br 250-流水线 250 尺寸 1741203456 250-VRFY 250-ETRN 250-STARTTLS 250 个增强状态代码 250-8BITMIME 250 DSN 调试 SMTP:找到扩展名“PIPELINING”,arg“” 调试 SMTP:找到扩展名“SIZE”,arg“1741203456” 调试 SMTP:找到扩展名“VRFY”,arg“” 调试 SMTP:找到扩展名“ETRN”,arg“” 调试 SMTP:找到扩展名“STARTTLS”,arg“” 调试 SMTP:找到扩展名“ENHANCEDSTATUSCODES”,arg“” 调试 SMTP:找到扩展名“8BITMIME”,arg“” 调试 SMTP:找到扩展名“DSN”,arg“” 调试 SMTP:use8bit false 发件人: 250 2.1.0 好的 RCPT 收件人: 554 5.7.1:客户端主机被拒绝:访问被拒绝 调试 SMTP:地址无效 调试 SMTP:rnn2@live.com 调试 SMTP:由于目标地址无效,发送失败 RSET 250 2.0.0 好的
【问题讨论】:
【参考方案1】:服务器似乎拒绝了您的请求,可能是基于您的 IP 地址,也可能是基于发件人或收件人地址。添加session.setDebug(true) 并检查调试输出以获取有关失败原因的更多线索。
另外,你可能想change Session.getDefaultInstance to Session.getInstance。
【讨论】:
我激活了 session.setDebug (true) 并在我的问题描述中输入了收集的信息。请检查,服务器是否拒绝与电子邮件地址相同的 IP 地址是有效地址。 您使用的是非常旧的 JavaMail 版本。因此,您没有对您的邮件服务器进行身份验证。升级到latest version,我认为它会解决您的问题。如果这不可行,请将“mail.smtp.auth”设置为“true”,看看是否有帮助。 我更新到最新版本的JavaMail并试听不成功,然后将属性“mail.smtp.auth”插入true,仍然失败,也抛出了同样的异常。 javax.mail.SendFailedException:地址无效;嵌套异常是:com.sun.mail.smtp.SMTPAddressFailedException: 554 5.7.1以上是关于Android 发送自定义电子邮件 STARTTLS 端口 587的主要内容,如果未能解决你的问题,请参考以下文章
logback 发送邮件和自定义发送邮件;java类发送邮件