Не удалось отправить письмо на следующий сервер (apache commons - Java)

0

Я пытаюсь отправить HTML-адрес электронной почты, используя Apache Commons в моей программе Java. Это мой код:

HtmlEmail email = new HtmlEmail();
email.setHostName("mail.axc.nl");
email.setSslSmtpPort("465");
email.setAuthenticator(new DefaultAuthenticator("username", "password"));
email.setSSLOnConnect(true);
email.addTo(emailadr, name);
email.setFrom("[email protected]", "SmartFix");
email.setSubject("Subject");
email.setHtmlMsg("here goes my message");
email.send();

Теперь это работает как очарование на моем настольном компьютере (под управлением Windows 8). Теперь, на моем сервере (работает Windows Server 2012), он терпит неудачу. Он всегда получает следующее исключение:

Sending the email to the following server failed: mail.axc.nl:465

Я проверил свои учетные данные дюжину раз, ничего плохого с ними. Я не могу понять, почему это не будет работать на моем сервере, хотя на моем рабочем столе это отлично работает: S

UPDATE: кажется, что ошибка возникает всякий раз, когда вы компилируете и запускаете программу. Когда мой код работает в netbeans, он работает отлично. Здесь трассировка стека:

C:\inetpub\tracking>java.exe -jar SmartFixGUI.jar
SmartFix Tracking Terminal - loaded successfully.
Currently tracking null
71QJD73I3I is a smartphone.
Currently tracking 71QJD73I3I
71QJD73I3I is a smartphone.
org.apache.commons.mail.EmailException: Sending the email to the following serve
r failed : mail.axc.nl:465
        at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1410)
        at org.apache.commons.mail.Email.send(Email.java:1437)
        at smartfixgui.trackingNumber.sendMail(trackingNumber.java:378)
        at smartfixgui.infoViewer.jButton2ActionPerformed(infoViewer.java:262)
        at smartfixgui.infoViewer.access$200(infoViewer.java:19)
        at smartfixgui.infoViewer$3.actionPerformed(infoViewer.java:149)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour
ce)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$200(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: javax.mail.MessagingException: IOException while sending message;
  nested exception is:
        javax.activation.UnsupportedDataTypeException: no object DCH for MIME ty
pe multipart/mixed;
        boundary="----=_Part_0_1999183509.1389954279345"
        at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1182)
        at javax.mail.Transport.send0(Transport.java:254)
        at javax.mail.Transport.send(Transport.java:124)
        at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1400)
        ... 41 more
Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for MIME
 type multipart/mixed;
        boundary="----=_Part_0_1999183509.1389954279345"
        at javax.activation.ObjectDataContentHandler.writeTo(Unknown Source)
        at javax.activation.DataHandler.writeTo(Unknown Source)
        at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1593)
        at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1839)
        at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1134)
        ... 44 more

ОБНОВЛЕНИЕ 2: Похоже, что в моем файле build.xml может возникнуть проблема... При запуске "распакованной" версии jar (мой код в банке и apache/javax в отдельном банке в папке lib) все работает отлично. При запуске "комбинированного распределения" (apache, javax и моего кода, упакованных в одну банку) это происходит неправильно.

Кто-нибудь видит ошибку в моем файле build.xml? Я использую его в течение довольно долгого времени, никогда не было никаких проблем:/

<?xml version="1.0" encoding="UTF-8"?>
<project name="SmartFixGUI" default="default" basedir=".">
    <description>Builds, tests, and runs the project SmartFixGUI.</description>
    <import file="nbproject/build-impl.xml"/>
<target name="-post-jar">
    <jar jarfile="dist/Combined-dist.jar">
    <zipfileset src="${dist.jar}" excludes="META-INF/*" />
    <zipfileset src="lib/commons-email-1.3.2.jar" excludes="META-INF/*" />
    <zipfileset src="lib/javax.mail.jar" excludes="META-INF/*" />
    <manifest>
        <attribute name="Main-Class" value="smartfixgui.main"/>
    </manifest>
  </jar>
</target>
</project>
  • 0
    Может ли ваш сервер подключиться к mail.axc.nl ? Есть ли брандмауэр?
  • 0
    Может быть, есть какая-то более значимая информация (например, Отказ в соединении) в трассировке стека (особенно в самом низком исключении)?
Показать ещё 3 комментария
Теги:
email

1 ответ

1
Лучший ответ

Благодаря Джеральду Шнайдеру я нашел решение.

Пойдя немного дальше по исключению DCH, я обнаружил, что добавление этого кода перед созданием объекта электронной почты исправляет его!

MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
        mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
        mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
        mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
        mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
        mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
        CommandMap.setDefaultCommandMap(mc);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню