gpt4 book ai didi

java - SMTP邮件发送问题: com. sun.mail.smtp.SMTPAddressFailedException : 550 5. 7.1无法中继

转载 作者:行者123 更新时间:2023-11-29 10:09:32 25 4
gpt4 key购买 nike

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

[com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 Unable to relay][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();
}

请帮帮我。谢谢。

最佳答案

本来我想把它作为评论发布的,但是它太长了。

错误很明显,您不能使用给定的 SMTP 服务器作为中继。 ( What are SMTP relays? )

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

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

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

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

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

5.7.1 status code from IANA registry

The sender is not authorized to send to the destination. This can bethe result of per-host or per-recipient filtering. This memo does notdiscuss the merits of any such filtering, but provides a mechanism toreport such. This is useful only as a permanent error.

关于java - SMTP邮件发送问题: com. sun.mail.smtp.SMTPAddressFailedException : 550 5. 7.1无法中继,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47154643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com