【问题标题】:Android send custom email STARTTLS port 587Android 发送自定义电子邮件 STARTTLS 端口 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 好的

【问题讨论】:

    标签: java android email jakarta-mail


    【解决方案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 客户端电子邮件中添加了这个电子邮件帐户,它工作正常,然后邮件服务器正常,问题确实出在我的代码中。
    猜你喜欢
    • 2017-07-11
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多