2015-02-09 55 views
1

我使用版本1.3.3 Apache Commons Mail發送電子郵件。我試過使用Apache Commons郵件不發送郵件

  • 改變Apache的郵件版本使用telnet smtp.gmail.com 587進行連接測試
  • (它的工作原理,所以它不是關於防火牆)
  • 嘗試用不同的端口
  • 設置SSL/TSL和嘗試過其他一堆方法
  • 配置我的Gmail中啓用IMAP,POP

但仍郵件沒有發送出去。

這是調試消息我已經,用Google搜索的解決方案,但沒有能夠解決這個問題,我有

DEBUG: JavaMail version 1.4ea 
DEBUG: java.io.FileNotFoundException: C:\Program Files\Java\jdk1.7.0_67\jre\lib\javamail.providers (The system cannot find the file specified) 
DEBUG: URL jar:file:/C:/Users/doreenlohjw/.m2/repository/org/jvnet/mock- javamail/mock-javamail/1.9/mock-javamail-1.9.jar!/META-INF/javamail.providers 
DEBUG: Bad provider entry: 
DEBUG: successfully loaded resource: jar:file:/C:/Users/doreenlohjw/.m2/repository/org/jvnet/mock-javamail/mock- javamail/1.9/mock-javamail-1.9.jar!/META-INF/javamail.providers 
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers 
DEBUG: Tables of loaded providers 
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], org.jvnet.mock_javamail.MockStore=javax.mail.Provider[STORE,imap,org.jvnet.mock_javamail.MockStore,java.net mock-javamail project], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], org.jvnet.mock_javamail.MockTransport=javax.mail.Provider[TRANSPORT,smtp,org.jvnet.mock_javamail.MockTransport,java.net mock-javamail project], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]} 
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,org.jvnet.mock_javamail.MockStore,java.net mock-javamail project], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,org.jvnet.mock_javamail.MockStore,java.net mock-javamail project], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,org.jvnet.mock_javamail.MockTransport,java.net mock-javamail project]} 
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map 
DEBUG: !anyLoaded 
DEBUG: not loading resource: /META-INF/javamail.address.map 
DEBUG: java.io.FileNotFoundException: C:\Program Files\Java\jdk1.7.0_67\jre\lib\javamail.address.map (The system cannot find the file specified) 
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,org.jvnet.mock_javamail.MockTransport,java.net mock-javamail project] 

和我的代碼的下面,

MultiPartEmail email = new MultiPartEmail(); 
email.setSmtpPort(587); 
email.setHostName("smtp.gmail.com"); 
email.setAuthentication("[email protected]", "xxx"); 
email.setDebug(true); 
email.setStartTLSEnabled(true); 
email.setFrom(from); 
email.setSubject(subject); 
email.setMsg(msg); 
email.addTo(to); 
email.attach(attachment); 
email.send(); 
+0

我不確定,但似乎你的類路徑中有郵件模擬服務。從名字猜測我猜這個實現不會發出一個真正的郵件... – 2015-02-09 09:25:32

+0

mail.transport.protocol你可以檢查這個屬性。 – Anil 2015-02-09 09:41:54

+1

@DaDaDom多數民衆贊成在工作!我刪除了模擬的javamail依賴項,並且所有的工作都像是一種享受。謝謝!答覆作爲答案,所以我可以接受它作爲答案。 – Programmer 2015-02-09 09:55:55

回答

0

看來你有一個在你的類路徑中發送模擬服務。從名字猜測,我猜這個實現不會發出真正的郵件。

所以請嘗試從類路徑中移除該庫,然後重試。

我使用maven,你可以設置scope模擬依賴關係到test

相關問題