2011-11-23 763 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

相关问题