2010-05-14 45 views
1

當我調用發送方法(設置studentAddress後)在Java中發送電子郵件,我得到這個:嘗試使用Gmail始終會導致用戶名和密碼不被接受

javax.mail.AuthenticationFailedException: 535-5.7.1 Username and Password not accepted. Learn more at
535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 y15sm906936wfd.10

我敢肯定的代碼是正確的,並且100%肯定我輸入的用戶名和密碼的詳細信息是正確的。那麼這是什麼錯誤的Gmail或什麼?

這是我的代碼:

import java.util.*; 
import javax.mail.*; 
import javax.mail.internet.*; 

public class SendEmail { 

    private String host = "smtp.gmail.com"; 
    private String emailLogin = "[email protected]"; 
    private String pass = "xxx"; 
    private String studentAddress; 
    private String to; 
    private Properties props = System.getProperties(); 

    public SendEmail() { 
     props.put("mail.smtps.auth", "true"); 
     props.put("mail.smtps.starttls.enable", "true"); 
     props.put("mail.smtp.host", host); 
     props.put("mail.smtp.user", emailLogin); 
     props.put("mail.smtp.password", pass); 
     props.put("mail.smtp.port", "587"); 
     to = "[email protected]"; 
    } 

    public void setStudentAddress(String newAddress) { 
     studentAddress = newAddress; 
    } 

    public void send() { 
     Session session = Session.getDefaultInstance(props, null); 
     MimeMessage message = new MimeMessage(session); 
     try { 
      message.setFrom(new InternetAddress(emailLogin)); 

      InternetAddress[] studentAddressList = {new InternetAddress(studentAddress)}; 
      message.setReplyTo(studentAddressList); 
      message.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); 
      message.setSubject("Test Email"); 
      message.setText("This is a test email!"); 
      Transport transport = session.getTransport("smtps"); 
      transport.connect(host, emailLogin, pass); 
      transport.sendMessage(message, message.getAllRecipients()); 
      transport.close(); 
     } catch (MessagingException me) { 
      System.out.println("There has been an email error!"); 
      me.printStackTrace();   
     } 
    } 

} 

任何想法...

+0

要縮小範圍,如果更改爲.getTransport(「smtp」)是否有效? – Serapth 2010-05-14 03:11:42

+0

其實我只是想通了,代碼很好。我使用了一個不同的gmail帳號來與我正在測試的帳號進行比較,並且工作得很完美。因此,出於某種原因,我剛剛在一小時前設置的用於測試此代碼的gmail帳戶無法正常工作?我在其設置中啓用了彈出窗口,所以我不確定爲什麼會出現這種情況。 – Thaeos 2010-05-14 03:24:41

回答

0

是做與Gmail的問題,而不是代碼!

0

對於在您的程序中使用gmail帳戶有一定的限制。其中一個是帳戶應該有一些天,我猜它是1天大。

2

我的確有同樣的問題(使用commons-email確實比使用java.mail更容易)。 什麼解決它對我來說是更改用戶名包括[email protected]而不是「用戶」。 可能是新的b錯誤,但也許其他人可以從中受益。

3

這有兩個解析:

您可以通過生成的鏈接,即「https://accounts.google.com/IssuedAuthSubTokens」應用專用密碼,並 到位使用生成的應用程序專用密碼您的原始密碼 。我已經做到了這一點,其工作

爲什麼異常的原因(javax.mail.AuthenticationFailedException:535-5.7.1應用專用密碼是必需的)發生的是,你可能已經激活2-對您的Gmail帳戶進行一步驗證。如果您使用的帳戶未啓用兩步驗證,則可以通過原始密碼發送電子郵件。我也試過這個,它的工作正常。

相關問題