首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >被spamhaus阻塞的邮件客户端

被spamhaus阻塞的邮件客户端
EN

Stack Overflow用户
提问于 2016-05-11 16:01:30
回答 1查看 1.5K关注 0票数 0

我需要用Java发送电子邮件,遇到一个我似乎无法解决的问题。我收到以下错误消息:

javax.mail.SendFailedException:无效地址;嵌套异常是: com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1服务不可用;客户端xx.xx被zen.spamhaus.org阻塞

我不明白的部分是,上面将IP地址伪装为xx.xx.xx.xx的部分实际上是我的开发计算机公共IP地址,并且没有以任何方式连接到我正在使用的邮件服务器。

邮件服务器是我自己的,我可以通过我尝试过的所有其他渠道发送邮件(node.js应用程序,email-client,.)服务器不在任何阻塞列表中。

我使用的代码如下:

代码语言:javascript
复制
public class SendMailExample {

    public void sendMail(String smtpHost,String username,String password,String senderAddress,String recipientsAddress,String subject,String text ){
        MailAuthenticator auth = new MailAuthenticator(username, password);
        Properties properties = new Properties();
        properties.put("mail.smtp.host", smtpHost);
        properties.put("mail.smtp.auth", "true");
        Session session = Session.getDefaultInstance(properties, auth);

        try {
            Message msg = new MimeMessage(session);

            msg.setFrom(new InternetAddress(senderAddress));
            msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
                    recipientsAddress, false));
            msg.setSubject(subject);
            msg.setText(text);
            msg.setHeader("Test", "Test");
            msg.setSentDate(new Date( ));
            Transport.send(msg);

        }
        catch (Exception e) {
            e.printStackTrace( );
        }
    }

    class MailAuthenticator extends Authenticator {
        // more code - I think unrelated 
    }

    public static void main(String[] args) {
        String username = "xxx@xxx.com";
        String password = "pass";
        String senderAddress ="xxx@xxx.com";
        String recipientsAddress = "some@one.com"; 
        String subject = "Test";
        String text = "text";
        String smtpHost = "smtp.myMailServer.com";
        new SendMailExample().sendMail(smtpHost, username, password, senderAddress, recipientsAddress, subject, text);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-11 16:58:21

通过更改以下内容解决了这个问题:

添加:

代码语言:javascript
复制
properties.put("mail.smtp.starttls.enable", "true");

到属性部分,而不是

代码语言:javascript
复制
Transport.send(msg);

我现在用

代码语言:javascript
复制
Transport transport = session.getTransport("smtp");
transport.connect(smtpHost, 587, username, password);
msg.saveChanges();
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37167835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档