2014-11-04 58 views
3

所以我試圖讓Java郵件工作,因爲我看到這個網站的其他答案不工作,過去一年左右,我不得不假設一些事情發生了變化。所以我apoligies如果這個問題看起來像一個DUPLICATE我不明白爲什麼它不工作。以下是我的代碼:com.sun.mail.smtp.SMTPSendFailedException:530-5.5.1需要身份驗證(Java郵件)

try{ 
     Properties property = new Properties(); 
     property.setProperty("mail.smtp.host", "smtp.gmail.com"); 
     property.setProperty("mail.smtp.starttls.enable", "true"); 
     //property.setProperty("mail.smpt.port", "25"); 
     property.setProperty("mail.smtp.user", "[email protected]"); 
     property.setProperty("mail.smtp.auth", "true"); 

     System.out.println("Mail Check 1"); 

     Session session = Session.getDefaultInstance(property); 
     MimeMessage message = new MimeMessage(session); 
     message.setFrom(new InternetAddress("[email protected]")); 
     message.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]")); 

     System.out.println("Mail Check 2"); 

     message.setSubject("Oil Error Report"); 
     message.setText(emailMessage); 

     System.out.println("Mail Check 3"); 

     Transport transport = session.getTransport("smtps"); 
     transport.connect("smtp.gmail.com",465,"[email protected]","myPassword"); 
     transport.sendMessage(message, message.getAllRecipients()); 
     transport.close(); 

     System.out.println("Mail Sent"); 
    }catch(Exception ex){ 
     System.out.println("Mail fail"); 
     System.out.println(ex); 
    } 

我起牀郵件檢查3然後我得到以下異常:

com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required. Learn more at 
530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 u3sm10254140ioi.27 - gsmtp 

這是沒有意義的,因爲我已經mail.smtp.auth設爲真正。我已經看過過去的答案,並且試圖在發佈之前讓它工作。我假設它是簡單的..任何幫助將不勝感激!謝謝!

回答

11
public class EmailSender {  
    public void sendEmail(String emailMessage){ 

     try{ 
      final String fromEmail = ""; //requires valid gmail id 
      final String password = ""; // correct password for gmail id 
      final String toEmail = ""; // can be any email id 

      System.out.println("TLSEmail Start"); 
      Properties props = new Properties(); 
      props.put("mail.smtp.host", "smtp.gmail.com"); //SMTP Host 
      props.put("mail.smtp.port", "587"); //TLS Port 
      props.put("mail.smtp.auth", "true"); //enable authentication 
      props.put("mail.smtp.starttls.enable", "true"); //enable STARTTLS 

       //create Authenticator object to pass in Session.getInstance argument 
      Authenticator auth = new Authenticator() { 
       //override the getPasswordAuthentication method 
       protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(fromEmail, password); 
       } 
      }; 
      Session session = Session.getInstance(props, auth); 

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

      System.out.println("Mail Check 2"); 

      message.setSubject("Oil Error Report"); 
      message.setText(emailMessage); 

      System.out.println("Mail Check 3"); 

      Transport.send(message); 
      System.out.println("Mail Sent"); 
     }catch(Exception ex){ 
      System.out.println("Mail fail"); 
      System.out.println(ex); 
     } 
    } 
} 

這是讓它工作的代碼!這是2014年11月,這目前適用於Gmail!我希望這段代碼能夠幫助節省時間,佔用我的大部分時間!隨着此代碼,您必須更改您的電子郵件設置,以允許這些電子郵件被允許。第一次嘗試時,您會收到來自Google的電子郵件,並會引導您更改設置。

謝謝,祝你好運!

+0

啊,它爲我工作!非常感謝。我的代碼有很多錯誤。有一件事會得到解決,然後另一件就會彈出,似乎它永遠不會結束。你搖滾。 – 2015-07-28 20:04:41

+0

耶!快樂它幫助了某人!做出所有艱苦的工作都值得。祝你有美好的一天! – 2016-02-05 17:40:17

0

你看過網址嗎?你有沒有按照所有步驟?發生了什麼?

您需要修復這些common mistakes

請注意,由於您使用的是「smtps」協議,因此應用了mail.smtp。*屬性的。但沒關係,因爲你調用connect方法的方式不需要它們。

+0

雅我相信我做過了,我看了你給我的鏈接,我沒有做任何他們不做的事情......你看到我在做或不做在那裏的東西嗎? – 2014-11-05 02:20:54

+0

不是我發送的URL,錯誤消息中的URL。 – 2014-11-05 07:46:11