2013-12-13 3 views
1

Я использую следующий код для отправки почты изJavaMail исключения API - аутентификация требуется

public class Test { 

    private String SMTP_HOST_NAME = "smtp.bizmail.yahoo.com"; 
    private String SMTP_AUTH_USER = "[email protected]"; 
    private String SMTP_AUTH_PWD = "mypassword"; 
    private String SMTP_MAIL_PORT = "587"; 

    public void postMail(String recipient, String subject, String message) 
    { 
     Properties props = new Properties(); 

     SMTPAuthenticator authenticator = new SMTPAuthenticator(); 
     props.setProperty("mail.smtp.submitter", authenticator.getPasswordAuthentication().getUserName()); 
     props.setProperty("mail.smtp.auth", "true"); 
     props.setProperty("mail.smtp.host", SMTP_HOST_NAME); 
     props.setProperty("mail.smtp.port", SMTP_MAIL_PORT); 
     props.setProperty("mail.smtp.starttls.enable","true"); 
     props.setProperty("mail.transport.protocol", "smtp"); 
     props.setProperty("mail.debug", "true"); 

     Session session = Session.getInstance(props, authenticator); 
     try { 
      Message msg = new MimeMessage(session); 
      msg.setFrom(new InternetAddress(SMTP_AUTH_USER)); 
      msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(recipient)); 
      msg.setSubject(subject); 
      msg.setContent(message, "text/html"); 
      Transport.send(msg); 
      System.out.println("Email send successfully Done"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private class SMTPAuthenticator extends javax.mail.Authenticator { 
     public PasswordAuthentication getPasswordAuthentication() { 
      String username = SMTP_AUTH_USER; 
      String password = SMTP_AUTH_PWD; 
      return new PasswordAuthentication(username, password); 
     } 
    } 

    public static void main(String[] args) { 
     Test s = new Test(); 
     s.postMail("[email protected]", "Test Subject", "Test Mail"); 
    } 
}  

Из выше коды я могу отправить почту успешно, но теперь я получаю исключение

javax.mail.MessagingException: 530 5.7.1 Authentication required 

ли там какие-либо изменения в SMTP-сервере Yahoo или что-то еще

Вот стопстрак

DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] 
DEBUG SMTP: useEhlo true, useAuth true 
DEBUG SMTP: useEhlo true, useAuth true 
DEBUG: SMTPTransport trying to connect to host "smtp.bizmail.yahoo.com", port 587 
DEBUG SMTP RCVD: 220 smtp.bizmail.yahoo.com ESMTP ready 
DEBUG: SMTPTransport connected to host "smtp.bizmail.yahoo.com", port: 587 
DEBUG SMTP SENT: EHLO ET-3-PC 
DEBUG SMTP RCVD: 250-smtp.bizmail.yahoo.com 
250-PIPELINING 
250-SIZE 41697280 
250-8 BITMIME 
250 STARTTLS 

DEBUG SMTP Found extension "PIPELINING", arg "" 
DEBUG SMTP Found extension "SIZE", arg "41697280" 
DEBUG SMTP Found extension "8", arg "BITMIME" 
DEBUG SMTP Found extension "STARTTLS", arg "" 
DEBUG SMTP: use8bit false 
DEBUG SMTP SENT: MAIL FROM:<[email protected]> 
DEBUG SMTP RCVD: 530 5.7.1 Authentication required 

DEBUG SMTP SENT: QUIT 
javax.mail.SendFailedException: Sending failed; 
    nested exception is: 
    javax.mail.MessagingException: 530 5.7.1 Authentication required 

    at javax.mail.Transport.send0(Transport.java:219) 
    at javax.mail.Transport.send(Transport.java:81) 
    at com.einsteiner.util.SendMailToUser.postMail(SendMailToUser.java:67) 
    at com.einsteiner.util.SendMailToUser.main(SendMailToUser.java:197) 
+0

где вы получаете исключение? –

+0

Ваши учетные данные могут быть недействительными. Также может быть так, что они отказываются от ваших соединений таким образом. – Makoto

+0

@Makoto Раньше я могу успешно отправлять почту без каких-либо ошибок. Но теперь я получаю это исключение. При запуске кода я заменяю имя пользователя и пароль на фактические. По причинам, о которых я упомянул здесь test.com или domain.com – vishal

ответ

2

На основе вывода отладки вы используете очень старой версии JavaMail. Вот почему свойства, которые вы настраиваете, не работают.

Вы должны перейти на более новую версию (не менее 1.4.7, которая поддерживает эти свойства). Вы можете найти последнюю версию here.

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