SMTP邮件发送问题:com.sun.mail.smtp.SMTPAddressFailedException:550 5.7.1无法中继

Nir*_*ati 1 java jakarta-mail smtp-auth

我正在尝试从Java发送邮件. 如果我将邮件发送到同一个SMTP它工作正常. 如果我将邮件发送到外部SMTP,如Gmail,雅虎等,它会显示错误,如,

[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
Run Code Online (Sandbox Code Playgroud)

邮件发送代码:

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();
        }
Run Code Online (Sandbox Code Playgroud)

请帮我.Thnaks.

rko*_*egi 6

原来,我即将发布此评论,但它太长了.

错误很明显,不允许使用给定的SMTP服务器作为中继.(什么是SMPT继电器?)

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

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

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

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

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

5.7.1来自IANA注册局的状态代码

发件人无权发送到目的地.这可能是每个主机或每个收件人筛选的结果.本备忘录不讨论任何此类过滤的优点,但提供了一种报告此类过滤的机制.这仅作为永久性错误有用.