2016-12-08 2 views
0

я имел проблемы при отправке почты использованияКонтактная Java это мой кодjavax.mail.SendFailedException Недействительные адреса при отправке почты

package callcentersystem; 

public class Email { 

    private String topic = "my test"; 
    private String myMassage = "nothinge"; 

    public void untitledMethod(String to) { 
     String host = "my ip adresse"; 
     Properties properties = System.getProperties(); 
     properties.setProperty("mail.smtp.host", host); 
     Session session = Session.getDefaultInstance(properties); 
     try { 
      MimeMessage message = new MimeMessage(session); 
      message.setFrom(new InternetAddress(utils.Constants.From)); 
      message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); 
      message.setSubject(topic); 
      message.setText(myMassage); 
      Transport transport = session.getTransport("smtp"); 
      transport.send(message); 
      System.out.println("Sent message successfully...."); 
     } catch (MessagingException mex) { 
      System.out.println("the massage didnt send"); 
      throw new RuntimeException(mex); 
     } 
    } 
} 

и это мой крах массаж

the massage didnt send 
Exception in thread "main" java.lang.RuntimeException:  javax.mail.SendFailedException: Invalid Addresses; 
nested exception is: 
com.sun.mail.smtp.SMTPAddressFailedException: 530 SMTP authentication is required. 

at callcentersystem.Email.untitledMethod(Email.java:33) 
at callcentersystem.CallCenterSystem.main(CallCenterSystem.java:10) 
Caused by: javax.mail.SendFailedException: Invalid Addresses; 
nested exception is: 
com.sun.mail.smtp.SMTPAddressFailedException: 530 SMTP authentication is required. 

at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1446) 
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:736) 
at javax.mail.Transport.send0(Transport.java:191) 
at javax.mail.Transport.send(Transport.java:120) 
at callcentersystem.Email.untitledMethod(Email.java:29) 
... 1 more 
Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 530 SMTP authentication is required. 

at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1344) 
... 5 more 

я перепробовал все способы решить эту проблему, но она работает доцент, и я устанавливаю администратора hmailserver, и я использую его, чтобы решить мою проблему с localhost.

ответ

0

Очевидно, что для этого S есть необходимость в аутентификационных данных Сервер МТР, как это видно из вложенного исключения: 530 SMTP authentication is required

Вам необходимо установить экземпляр Authenticator для сессии:

... 
Authenticatior authenticator = 
     new javax.mail.Authenticator() { 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication(
        "[email protected]", "yourpassword"); 
      } 
     }; 
Session session = Session.getDefaultInstance(properties, authenticator); 
... 

Изменение [email protected] и ВАШ ПАРОЛЬ фактических полномочий на сервер электронной почты, на котором вы пытаетесь отправить сообщение. Для этого вам нужна действительная учетная запись, так как она требует аутентификации.

В качестве примечания к примечанию, которое не связано с вопросом, вы уверены, что хотите использовать Session.getDefaultInstance, а не Session.getInstance? Прочитайте документацию о последствиях.

+0

я получил ту же ошибку –

+0

Но вы изменили учетные данные фактические учетные данные на сервере электронной почты, которые вы пытались отправить? – Dreamer

+0

Я попробовал anthor код, но на этот раз моя ошибка javax.mail.AuthenticationFailedException: не удалось подключиться –

0

я решил эту проблему с помощью этого кода

public void untitledMethod(ArrayList to, String password, String message) { 
    String host = "smtp.gmail.com"; 
    Properties props = System.getProperties(); 
    props.put("mail.smtp.starttls.enable", "true"); 
    props.put("mail.smtp.host", host); 
    props.put("mail.smtp.user", utils.Constants.From); 
    props.put("mail.smtp.password", password); 
    props.put("mail.smtp.port", 587); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.socketFactory.port", "465"); 
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtp.socketFactory.fallback", "false"); 

    Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { 
     @Override 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(utils.Constants.From, password); 
     } 
    }); 
    MimeMessage mimeMessage = new MimeMessage(session); 
    try { 
     mimeMessage.setFrom(new InternetAddress(utils.Constants.From)); 
     InternetAddress[] toAddress = new InternetAddress[to.size()]; 
     for (int i = 0; i < to.size(); i++) { 
      toAddress[i] = new InternetAddress((String) to.get(i)); 
     } 

     for (InternetAddress toAddres : toAddress) { 
      mimeMessage.addRecipient(Message.RecipientType.TO, toAddres); 
      mimeMessage.setSubject("Clinic Support"); 
      mimeMessage.setText(message); 
      Transport transport = session.getTransport("smtp"); 
      transport.connect(host, 587, utils.Constants.From, password); 
      transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients()); 
      transport.close(); 
     } 

    } catch (MessagingException me) { 
     me.printStackTrace(); 
    } 
} 

но вы должны убедиться, что с вашей электронной почты и пароль, которые вы используете его для отправки почты

Смежные вопросы