javax.mail.SendFailedException

javax.mail.SendFailedException,java,jakarta-mail,Java,Jakarta Mail,请帮助重新选择以下例外情况: DEBUG SMTP RCVD: 250 2.1.0 Sender OK DEBUG SMTP SENT: RCPT TO:<XXXX@gmail.com> DEBUG SMTP RCVD: 550 5.7.1 Unable to relay Invalid Addresses XXX@gmail.com DEBUG SMTPTransport: Sending failed because of invalid destination addr

请帮助重新选择以下例外情况:

DEBUG SMTP RCVD: 250 2.1.0 Sender OK

DEBUG SMTP SENT: RCPT TO:<XXXX@gmail.com>
DEBUG SMTP RCVD: 550 5.7.1 Unable to relay

Invalid Addresses
  XXX@gmail.com
DEBUG SMTPTransport: Sending failed because of invalid destination addresses
DEBUG SMTP SENT: RSET
DEBUG SMTP RCVD: 250 2.0.0 Resetting

DEBUG SMTP SENT: QUIT

Exception in thread "main" javax.mail.SendFailedException: Invalid Addresses;
  nested exception is:
    class javax.mail.SendFailedException: 550 5.7.1 Unable to relay

    at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:804)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:320)
    at javax.mail.Transport.send0(Transport.java:151)
    at javax.mail.Transport.send(Transport.java:80)
    at StatsEmail.sendEmail(StatsEmail.java:95)
    at Statements.main(Statements.java:73)
调试SMTP RCVD:250 2.1.0发送方正常
调试SMTP已发送:RCPT到:
调试SMTP RCVD:550 5.7.1无法中继
无效地址
XXX@gmail.com
调试SMTPTransport:由于目标地址无效,发送失败
已发送调试SMTP:RSET
调试SMTP RCVD:250 2.0.0重置
已发送调试SMTP:退出
线程“main”javax.mail.SendFailedException中的异常:无效地址;
嵌套异常是:
类javax.mail.SendFailedException:550 5.7.1无法中继
在com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:804)
在com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:320)上
位于javax.mail.Transport.send0(Transport.java:151)
在javax.mail.Transport.send(Transport.java:80)
在StatsEmail.sendmail(StatsEmail.java:95)
at Statements.main(Statements.java:73)
SRC/

    String host = "XXXXX";
    String from = "XXXX";


    java.util.Properties props = new java.util.Properties();


    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", host);
    props.put("mail.debug", "true");

    props.put("mail.smtp.port","25");


    props.put("mail.smtp.debug", "true");

    String[] to = {"XXXX@gmail.com"};

    javax.mail.Session session = Session.getDefaultInstance(props, null);
    javax.mail.internet.MimeMessage message = new javax.mail.internet.MimeMessage(session);

    message.setFrom(new InternetAddress(from));

    javax.mail.internet.InternetAddress[] toAddress = new javax.mail.internet.InternetAddress[to.length];


    for(int i =0; i< to.length; i++ ){

        toAddress[i] = new InternetAddress(to[i]); 
    }



    for(int i=0; i<toAddress.length;i++){

        message.addRecipient(Message.RecipientType.TO, toAddress[i]);
    }


    message.setSubject("TestMail");
    message.setText("TestJavaMail");

    Transport.send(message);


    System.out.println("Send Successful");
String host=“XXXXX”;
字符串from=“XXXX”;
java.util.Properties=new java.util.Properties();
props.put(“mail.smtp.starttls.enable”、“true”);
props.put(“mail.smtp.host”,host);
props.put(“mail.debug”,“true”);
props.put(“mail.smtp.port”,“25”);
props.put(“mail.smtp.debug”,“true”);
字符串[]到={”XXXX@gmail.com"};
javax.mail.Session Session=Session.getDefaultInstance(props,null);
javax.mail.internet.mimessage message=newjavax.mail.internet.mimessage(会话);
message.setFrom(新的InternetAddress(from));
javax.mail.internet.InternetAddress[]toAddress=new javax.mail.internet.InternetAddress[to.length];
for(int i=0;i对于(int i=0;i您的代码似乎可以访问任何其他服务器,但不能访问gmail smtp服务器

如果你想使用gmail服务器,你需要对帐户进行身份验证。下面的源代码可能会对你有所帮助。注意:我使用的是javax.mail版本1.4.7


错误代码501表示邮件地址无效。是否使用XXXX@gmail.com?试试真正的(也许是你的)地址。来吧,我只是放了XXX来隐藏我的IDI。我只向真实地址发送邮件。我不知道你如何能够在没有身份验证的情况下使用gmail帐户。我设置了一个小测试,这是发送邮件所必需的。你想让我发布源代码作为一个方向吗?
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


public class App {

    public static void main(String[] args) {
        String from = "XXXX@gmail.com";
        String to = "XXXX@web.de";

        Properties properties = createConfiguration();

        SmtpAuthenticator authentication = new SmtpAuthenticator();

        Session session = Session.getDefaultInstance(properties, authentication);

        try {

            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO,
                new InternetAddress(to));

            message.setSubject("This is the Subject Line!");

            // Now set the actual message
            message.setText("This is actual message");

           // Send message
           Transport.send(message);

           System.out.println("Sent message successfully....");
        } catch (MessagingException mex) {
           mex.printStackTrace();
     }
 }

 private static Properties createConfiguration() {
    return new Properties() {
        {
            put("mail.smtp.auth", "true");
            put("mail.smtp.host", "smtp.gmail.com");
            put("mail.smtp.port", "587");
            put("mail.smtp.starttls.enable", "true");
        }
    };
 }

 private static class SmtpAuthenticator extends Authenticator {

        private String username = "XXXX@gmail.com";
        private String password = "secret";

        @Override
        public PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
    }
}