SMTP邮件发送问题:com.sun.Mail.SMTP.SMTPAddressFailedException:550



我正在尝试从Java发送邮件。如果我将邮件发送到相同的SMTP,它工作正常如果我将邮件发送到外部SMTP方式,如Gmail、Yahoo等,它会显示错误,如,

[com.sun.mail.smtp.SMTPAddressFailedException:550 5.7.1无法中继][1]

错误:

SimpleEmail Start
javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 Unable to relay
Mail Send Successfully
at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:2064)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1286)
at javax.mail.Transport.send0(Transport.java:255)
at javax.mail.Transport.send(Transport.java:124)
at com.nirav.java.project.demo.JavaMailSend.sendEmail(JavaMailSend.java:26)
at com.nirav.java.project.demo.NewSimpleMail.main(NewSimpleMail.java:34)
Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 Unable to relay
at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1917)
... 5 more

邮件发送代码:

try {
System.out.println("SimpleEmail Start");
String smtpHostServer = "XX.XX.XX.XXX";
final String toEmail = "XXXXXXXXXX@XXX.XXX";
final String fromEmail = "XXXXXXXXXX@XXX.XXX";
final String password = "XXXXXXXXXXXX";
Properties props = System.getProperties();
props.put("mail.smtp.host", smtpHostServer);
props.put("mail.smtp.port", "25"); //If other then
Session session = Session.getInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(fromEmail, password);
}
});
//Session session = Session.getInstance(props, null);
MimeMessage message = new MimeMessage(session);
message.addHeader("Content-type", "text/HTML; charset=UTF-8");
message.addHeader("format", "flowed");
message.addHeader("Content-Transfer-Encoding", "8bit");
message.setFrom(new InternetAddress("XXXXXX@XXX.XXX", "NoReply-JD"));
message.setReplyTo(InternetAddress.parse("XXXXXXXXX@XXX.XXX", false));
message.setSubject(subject, "UTF-8");
message.setText(body, "UTF-8");
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toEmail, false));
Transport.send(message);
System.out.println("Mail Send Successfully");
} catch (Exception e) {
e.printStackTrace();
}

请帮帮我。Thnaks。

本来我打算把它作为评论发布,但太长了。

错误非常明显,您不允许使用给定的SMTP服务器作为中继。(什么是SMTP中继?)

发生这种情况有几个原因:

  • 您未通过身份验证(发送之前需要登录)

  • 收件人不在允许中继到的域列表中

  • 您连接的IP地址不在白名单中(也就是后缀上下文中的mynetworks)

如果不提供更多信息(你正在使用哪台SMTP服务器,你在哪里发送邮件,你是否经过身份验证),我想没有人会帮助你。

5.7.1 IANA注册表的状态代码

发件人无权发送到目的地。这可以是按主机或按收件人筛选的结果。这份备忘录没有讨论任何此类过滤的优点,但提供了一种机制报告。这只是一个永久性错误。

也有这个问题,但它是间歇性的。我们有两台服务器在一个集群中,其中一台服务器上发送电子邮件的系统的ip地址没有正确定义。不幸的是,错误消息"javax.mail.SendFailedException:Invalid Addresses"令人困惑。第二条错误消息:"com.sun.mail.smtp.SMTPAddressFailedException:550 relay not permited"匹配得更好。

相关内容

最新更新