2012-03-10 62 views
1

我有Windows 7系統沒有安裝smtp服務器,只有java。我想通過gmail從我的程序發送郵件。我已經寫了一個Java程序來通過smtp連接谷歌,並啓用了telnet選項,但我得到下面的錯誤。我嘗試使用端口465和587,但沒有改變。使用java從您的計算機發送郵件需要什麼?

錯誤:

Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: not connect to SMTP host: smtp.gmail.com, port: 587; 
nested exception is: 
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed 
at mail1.SendMailSSL.main(SendMailSSL.java:44) 

代碼:

import java.util.Properties; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 

public class SendMailSSL { 

    public static void main(String[] args) { 
     Properties props = new Properties(); 
     props.put("mail.smtp.host", "smtp.gmail.com"); 
     props.put("mail.smtp.socketFactory.port", "465"); 
     props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 

     props.setProperty("mail.transport.protocol", "smtp"); 
     props.setProperty("mail.smtp.host", "smtp.gmail.com"); 

     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.port", "587"); 

     Session session = Session.getDefaultInstance(props,newjavax.mail.Authenticator() 
     { 
      protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication("[email protected]","mypassword");     
      } 
     }); 

     try { 
      Message message = new MimeMessage(session); 
      message.setFrom(new InternetAddress("[email protected]")); 
      message.setRecipient(Message.RecipientType.TO, new InternetAddress(
        "[email protected]")); 
      message.setSubject("Testing Subject"); 
      message.setText("Dear Mail Crawler," 
        + "\n\n No spam to my email, please!"); 
      Transport.send(message); 
      System.out.println("Done"); 

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

誰能告訴我什麼,我需要做的,從我個人的系統中發送電子郵件?請一步一步告訴我,幷包括安裝軟件等任何內容,因爲我必須爲我的項目執行此操作。你的回答非常感謝。先謝謝你。

+0

檢查您的電腦中的系統日期是否正確 – 2012-03-10 10:26:59

+0

骯髒的(但工作中)的解決方案是更改您的SocketFactory的執行巫婆不檢查證書鏈的有效性。例如,您有EasySSLProtocolSocketFactory實現(來自Apache commons-httpclient-contrib包)。 – 2012-03-10 10:31:05

+0

非常感謝guido我犯了錯誤,我的電腦有舊日期.. – BOBBY 2012-03-11 02:04:18

回答

0

所需的JAR文件:

  • MAIL.JAVR
  • JAVAEE.JAR
  • 的activation.jar
  • DNSJAVA.JAR
  • SENDAMAIL-TOMCAT-2.1.2。JAR

步驟來發送郵件:

  1. 使用谷歌的SMTP服務器端口465

  2. 啓用Windows 7的telnet:

    控制面板>程序 >啓用Windows功能打開或關閉

    勾選「Telnet服務器」和「Telnet客戶端」

  3. 確保您的系統具有準確日期

  4. ,當然還有互聯網連接是必須的
+0

如果這是答案,請[標記本文爲答覆](http://meta.stackexchange.com/a/5235/182862) – 2012-04-13 19:40:04

相關問題