2011-11-23 762 views
1

我採用下面的代碼通過Hotmail服務發送電子郵件就像User Guide了org.apache.commons.mail.EmailException在使用常用郵箱是Hotmail發送電子郵件

@Override 
public Boolean SendMsg(String title, String Content, String receiver, String sender) { 
    try { 
     HtmlEmail email = new HtmlEmail(); 
     final String username = s_address; 
     final String password = s_pass; 
     email.setHostName(s_smtp); 
     email.setSmtpPort(Integer.parseInt(s_smtpp)); 
     email.setAuthentication(username, password); 
     email.setSmtpPort(Integer.parseInt(s_smtpp)); 
     switch (c_smtps) { 
      case '1': 
       email.setSSL(true); 
       email.setSslSmtpPort(s_smtpp); 
      case '2': 
       email.setTLS(true); 
     } 
     email.addTo(receiver); 
     email.setFrom(s_address, sender); 
     email.setSubject(title); 
     // set the html message 
     email.setHtmlMsg(Content); 

     // set the alternative message 
     email.setTextMsg(net.shisoft.util.common.html.Session.html2text(Content, true)); 
     email.send(); 
     return true; 
    } catch (EmailException ex) { 
     Logger.getLogger(ClassMail.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    return false; 
} 

但我得到了org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.live.com:587異常。

的細節是

org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.live.com:587 
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1242) 
    at org.apache.commons.mail.Email.send(Email.java:1267) 
    at net.shisoft.rmi.server.svr.plugin.ClassMail.SendMsg(ClassMail.java:232) 
    at net.shisoft.sdk.Logic.Mail.Send(Mail.java:108) 
    at net.shisoft.communicates.ThreadActions.dealForward(ThreadActions.java:389) 
    at net.shisoft.communicates.ThreadActions$1.run(ThreadActions.java:246) 
Caused by: javax.mail.MessagingException: IOException while sending message; 
    nested exception is: 
    javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed; 
    boundary="----=_Part_3_499646563.1322072487744" 
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:930) 
    at javax.mail.Transport.send0(Transport.java:191) 
    at javax.mail.Transport.send(Transport.java:120) 
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1232) 
    ... 5 more 
Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed; 
    boundary="----=_Part_3_499646563.1322072487744" 
    at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:877) 
    at javax.activation.DataHandler.writeTo(DataHandler.java:302) 
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1383) 
    at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1743) 
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:888) 
    ... 8 more 

一些搜索後,我發現有人有同樣的問題,但不能與正確答案(我reied添加如下代碼

// add handlers for main MIME types 
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); 

但不工作)。我真的不知道如何解決這個問題

回答

2

這個例外幾乎總是由於您的應用程序在運行環境中出現問題。通常,JavaMail將使用JAF爲您的消息中的每種數據查找DataContentHandler 。 JAF讀取 JavaMail mail.jar文件中的配置文件。如果您的類加載器出現問題,JAF可能不會 能夠讀取該配置文件。

一種解決方法,有時幫助是:

Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader()); 
在你的主應用程序類

+0

這在2015年的工作對我笑 –

1

您可以在$CATALINA_HOME/lib文件夾中包含最新的mail.jaractivation.jar並重新啓動tomcat。

來源:http://www.jguru.com/faq/view.jsp?EID=237257

+0

你能否詳細說明有關「東西」?鏈接解決方案的概要將本着Stack Overflow的精神;-) –

+0

我在$ CATALINA_HOME/lib文件夾中包含了最新的mail.jar和activation.jar,並重新啓動了tomcat。有用! – ldd

相關問題