Почта не отправляется с помощью Apache Commons Mail

Я использую версию 1.3.3 Apache Commons Mail для отправки электронных писем. я пробовал

  • изменение почтовой версии 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();

person Programmer    schedule 09.02.2015    source источник
comment
Я не уверен, но кажется, что у вас в пути к классам есть служба имитации рассылки. Судя по названию, я бы предположил, что эта реализация не будет отправлять настоящую почту...   -  person Dominik Sandjaja    schedule 09.02.2015
comment
mail.transport.protocol можете ли вы проверить это свойство.   -  person Anil    schedule 09.02.2015
comment
@DaDaDom это сработало! я удалил фиктивную зависимость от Javamail, и все заработало как удовольствие. Спасибо! Ответьте как ответ, чтобы я мог принять это как ответ.   -  person Programmer    schedule 09.02.2015
comment
В отличие от форумов, мы не используем слова «Спасибо» или «Любая помощь приветствуется» или подписи на Stack Overflow. См. раздел Должен ли быть "Привет", "спасибо" слоганов и приветствий удалить из постов?. Кстати, это заранее спасибо, а не спасибо заранее.   -  person John Saunders    schedule 10.02.2015


Ответы (1)


Кажется, у вас есть ложный почтовый сервис в вашем пути к классам. Судя по названию, я бы предположил, что эта реализация не будет отправлять настоящую почту.

Поэтому попробуйте удалить эту библиотеку из пути к классам и повторите попытку.

Если вы используете maven, вы можете установить scope этой фиктивной зависимости на test.

person Dominik Sandjaja    schedule 09.02.2015