请教各位大侠,我在Test类中写了一个SimpleMail发送邮件的方法,在main()方法中调用邮件发送成功
但是在servlet中调用就出错呢?
public class Test {
public static void main(String[] args) {
String from="[email protected]";
String to="[email protected]";
String subject="测试";
String msg="你能收到吗?";
Test test=new Test();
test.sendMail(from, to, subject, msg);
}
public  void sendMail(String from,String to,String subject,String msg){
SimpleEmail email = new SimpleEmail();
email.setHostName("smtp.163.com");
email.setAuthentication("colour_ll", "******");
email.setCharset("utf-8");
try {
email.setFrom(from);
email.addTo(to);
email.setSubject(subject);
email.setMsg(msg);
email.send();
System.out.println("邮件发送成功!");
} catch (EmailException e) {
e.printStackTrace();
System.out.println("邮件发送不成功!");

}
}}public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
                        String from=request.getParameter("from");
String to=request.getParameter("to");
String subject=request.getParameter("subject");
String msg=request.getParameter("content");                        Test test=new Test();
        test.sendMail(from, to, subject, msg);
}
错误信息:
org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.163.com:25
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1138)
at org.apache.commons.mail.Email.send(Email.java:1163)
at com.v512.Test.sendMail(Test.java:29)
at com.v512.SendMailServlet.doPost(SendMailServlet.java:80)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.mail.MessagingException: IOException while sending message;
  nested exception is:
javax.activation.UnsupportedDataTypeException: no object DCH for MIME type text/plain; charset=UTF-8
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:676)
at javax.mail.Transport.send0(Transport.java:189)
at javax.mail.Transport.send(Transport.java:118)
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1128)
... 17 more
Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type text/plain; charset=UTF-8
at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:841)
at javax.activation.DataHandler.writeTo(DataHandler.java:295)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1403)
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1745)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:636)
... 20 more

解决方案 »

  1.   

    java技术群:69705156
    欢迎加入
      

  2.   

    所有的易网免费邮箱已经在2007-11之后取消了pop3服务,主要是为了屏蔽垃圾邮件,用sina或者yahoo邮箱目前应该还可以
      

  3.   

    我用main方法测试过了呀,我的hotmail确实收到了163的邮件。
      

  4.   

    我用main方法测试过了呀,我的hotmail确实收到了163的邮件。