Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
线程“main”javax.mail.SendFailedException中的异常:无效地址;_Java_Email - Fatal编程技术网

线程“main”javax.mail.SendFailedException中的异常:无效地址;

线程“main”javax.mail.SendFailedException中的异常:无效地址;,java,email,Java,Email,我正在尝试从SMTP邮件服务器发送邮件。在使用基于spring的代码时,它工作得非常完美。但当我试图发送java代码时,以下是我的java代码: import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.

我正在尝试从SMTP邮件服务器发送邮件。在使用基于spring的代码时,它工作得非常完美。但当我试图发送java代码时,以下是我的java代码:

import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class Test1 {

  Properties emailProperties= new Properties();
  Session mailSession;
  MimeMessage emailMessage;

  public static void main(String args[]) throws AddressException,
      MessagingException {

    Test1 javaEmail = new Test1();
    javaEmail.setMailServerProperties();
    javaEmail.createEmailMessage();
    javaEmail.sendEmail();
  }

  public void setMailServerProperties() {

    String emailPort = "587";
    String host = "mysmtphost";
    emailProperties.put("mail.smtp.host", host);
    emailProperties.put("mail.smtp.socketFactory.port", "465");
    emailProperties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
    emailProperties.put("mail.smtp.auth", "true");
    emailProperties.put("mail.smtp.port", emailPort);

  }

  public void createEmailMessage() throws AddressException,
      MessagingException {
    String[] toEmails = { "tomail.com" };
    String emailSubject = "Java Email";
    String emailBody = "This is an email sent by JavaMail api.";


    mailSession = Session.getDefaultInstance(emailProperties, null);
    System.out.println("mailSession"+mailSession);
    emailMessage = new MimeMessage(mailSession);

    for (int i = 0; i < toEmails.length; i++) {
      emailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmails[i]));
    }

    emailMessage.setSubject(emailSubject);
    emailMessage.setContent(emailBody, "text/html");//for a html email
    //emailMessage.setText(emailBody);// for a text email

  }

  public void sendEmail() throws AddressException, MessagingException {

    String emailHost = "mysmtphost";
    String fromUser = "myusername";
    String fromUserEmailPassword = "mypassword";

    Transport transport = mailSession.getTransport("smtp");

    transport.connect(emailHost, fromUser, fromUserEmailPassword);
    System.out.println("connected to server");
    transport.sendMessage(emailMessage, emailMessage.getAllRecipients());
    transport.close();
    System.out.println("Email sent successfully.");
  }
}
当我作为java应用程序运行时,我得到以下异常:

Exception in thread "main" javax.mail.SendFailedException: Invalid Addresses;
  nested exception is:
    class javax.mail.SendFailedException: 554 5.7.1 <unknown[172.18.140.85]>: Client host rejected: Access denied
at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:926)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:389)
at com.cmc.test.Test1.sendEmail(Test1.java:76)
at com.cmc.test.Test1.main(Test1.java:28)
我正在将线路连接到控制台中的服务器

如果有人遇到这种问题,请帮助我。 等待答复


谢谢

信息非常清楚:

class javax.mail.SendFailedException: 554 5.7.1 <unknown[172.18.140.85]>: Client host rejected: Access denied

您必须添加身份验证信息。

谢谢您的快速回复。 但我也尝试了验证信息。以下是完整的代码:

public class TestMail {

    public static void main(String[] args) {

        final String username = "myuser";
        final String password = "mypassword";

        boolean debug = false;

        Properties props = new Properties();
          props.put("mail.smtp.host", "myhost");
          props.put("mail.smtp.socketFactory.port", "465");
          props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
          props.put("mail.smtp.auth", "true");
          props.put("mail.smtp.port", "587");


        Session session = Session.getInstance(props,
          new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(myuser, mypassword);
            }
          });

        try {

            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("frommail.com"));
            message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("tomail.com"));
            message.setSubject("Testing Subject");
            message.setText("Dear Mail Crawler,"
                + "\n\n No spam to my email, please!");

            Transport.send(message);

            System.out.println("Done");

        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
}

添加上述代码时出现相同的异常

感谢您的快速回复。但我也尝试了验证信息。下面是代码:mport java.util.Properties;Session Session=Session.getInstanceprops,new javax.mail.Authenticator{protected PasswordAuthentication getPasswordAuthentication{return new PasswordAuthenticationusername,password;}};添加上述代码时获得相同的异常