简体   繁体   English

邮件未使用Apache Commons Mail发送出去

[英]Mail doesn't get sent out using Apache Commons Mail

I'm using version 1.3.3 Apache Commons Mail for sending out emails. 我正在使用1.3.3版Apache Commons Mail来发送电子邮件。 I've tried 我试过了

  • changing the Apache mail version 更改Apache邮件版本
  • using telnet smtp.gmail.com 587 to test for connectivity (it works, so its not about the firewall) 使用telnet smtp.gmail.com 587测试连接性(它可以正常工作,因此与防火墙无关)
  • trying out with different ports 用不同的端口尝试
  • setting SSL/ TSL and tried other bunch of methods 设置SSL / TSL并尝试了其他方法
  • configured my gmail to enable IMAP, POP 将我的gmail配置为启用IMAP,POP

but still the mail is not sending out. 但邮件仍未发送出去。

this is the debug message i had, googled for solution, but none that solve the problem i have 这是我的调试消息,谷歌搜索解决方案,但没有一个解决我的问题

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]

and my code as of below, 和我的代码如下

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

It seems you have a mailing mock service in your classpath. 看来您的类路径中有一个邮件模拟服务。 Guessing from the name I'd guess that this implementation won't send out a real mail. 从名称猜测,我猜想此实现不会发送真实邮件。

So please try to remove that library from the classpath and try again. 因此,请尝试从类路径中删除该库,然后重试。

I you use maven, you can set the scope of that mock dependency to test . 我使用maven时,可以将模拟依赖项的scope设置为test

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM