2011-03-13 65 views
1
package com.bcs; 
import java.util.Properties; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 

public class SendMailTLS { 

    public static void main(String[] args) { 
     String host = "smtp.gmail.com"; 
     int port = 587; 
     String username = "[email protected]"; 
     String password = "bar"; 

     Properties props = new Properties(); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.starttls.enable", "true"); 

     Session session = Session.getInstance(props); 

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

      Transport transport = session.getTransport("smtp"); 
      transport.connect(host, port, username, password); 
      Transport.send(message); 

      System.out.println("Done"); 

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

我已經給出了所有必要的輸入。但它仍然失敗爲什麼javamail會以認證異常失敗?

Exception in thread "main" java.lang.RuntimeException: javax.mail.AuthenticationFailedException: failed to connect, no password specified? 
    at com.bcs.SendMailTLS.main(SendMailTLS.java:43) 
Caused by: javax.mail.AuthenticationFailedException: failed to connect, no password specified? 
    at javax.mail.Service.connect(Service.java:329) 
    at javax.mail.Service.connect(Service.java:176) 
    at javax.mail.Service.connect(Service.java:125) 
    at javax.mail.Transport.send0(Transport.java:194) 
    at javax.mail.Transport.send(Transport.java:124) 
    at com.bcs.SendMailTLS.main(SendMailTLS.java:38) 

我是新的java郵件。任何幫助將不勝感激。

+0

這有幫助嗎? http://stackoverflow.com/questions/1990454/using-javamail-to-connect-to-gmail-smtp-server-ignores-specified-port-and-tries-t – 2011-09-25 18:00:55

回答

3

這可能幫助:http://www.behrang.org/en/blog/2010/03/30/sending-email-from-grails-using-gmail/

我想你應該設置這些屬性:

'mail.smtp.auth': 'true', 
'mail.smtp.socketFactory.port': '465', 
'mail.smtp.socketFactory.class': 'javax.net.ssl.SSLSocketFactory', 
'mail.smtp.socketFactory.fallback': 'false' 

,端口爲465

+1

這需要通過'smtps'傳輸連接,不通過'smtp'。 OP有'smtp' /'STARTTLS'的正確端口。 http://mail.google.com/support/bin/answer.py?answer=13287 – dkarp 2011-03-13 20:27:27

相關問題