我的程序:
package until;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
public class Mail {
  public static void main(String arg[]){
   HtmlEmail email = new HtmlEmail();
   email.setHostName("smtp.163.com");//设置发信的smtp服务器
   try {
   email.addTo("[email protected]");
          //设置收件人帐号和收件人
   email.setFrom("[email protected]", "zhang_rzh");//设置发信的邮件帐号和发信人
   email.setSubject("HHHHH");//设置邮件主题
   email.setAuthentication("zhang_rzh","815241");//如果smtp服务器需要认证的话,在这里设置帐号、密码
   email.setHtmlMsg("ddddddddddd");//设置邮件正文和字符编码
   email.send();
} catch (EmailException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
  }
}
--------------------------
结果:
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 until.Mail.main(Mail.java:15)
Caused by: javax.mail.SendFailedException: Sending failed;
  nested exception is:
class javax.mail.MessagingException: Unknown SMTP host: smtp.163.com;
  nested exception is:
java.net.UnknownHostException: smtp.163.com
at javax.mail.Transport.send0(Transport.java:218)
at javax.mail.Transport.send(Transport.java:80)
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1128)
... 2 more请高手解答,非常感谢!!!!!!!!!

解决方案 »

  1.   

    异常堆栈都提示你了,不认识的SMTP主机:smtp.163.com
      

  2.   

    [email protected]邮箱设置里把服务器smtp.163.com启动
      

  3.   

    刚使用gmail测试了一下。发现好像是163服务器本身也有问题。建议楼主使用其他服务器测试一下程序。
      

  4.   

    我的GMAIL已經連不到163了 
      

  5.   

    package com.zznode.gixpert.util;import java.util.Properties;import javax.mail.Message;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    /***邮件发送器***/
    public class EmailSender {
     
    private  String subject;
    /***定义邮件正文**/
    private  String checkinreport;
     
    /**邮件目的地**/
    private  String destination ;
    /**发送邮件的邮箱地址**/
    private  String fountainhead;
    /***发送邮件邮箱密码***/
    private  String password; 
    private  String smtphost;
    private  String smtpcom;

    public void setPramater(String subject,String checkinreport,String destination,String fountainhead,String password,String smtphost,String smtpcom){
    this.subject=subject;
    this.checkinreport=checkinreport;
    this.destination=destination;
    this.fountainhead=fountainhead;
    this.password=password;
    this.smtphost=smtpcom;
    this.smtpcom=smtpcom;
    } public static void main(String[] args) {
    System.out.println("test mail send");

     String subject="1111111111";
    /***定义邮件正文**/
      String checkinreport = "正文";
    // static String emailadd = "[email protected],[email protected]";: static String emailadd = 
    /**邮件目的地**/
      String destination = "[email protected],[email protected],[email protected]";;
    /**发送邮件的邮箱地址**/
      String fountainhead="[email protected]";
    /***发送邮件邮箱密码***/
      String password="111"; 
      String smtphost="mail.smtp.host";
      String smtpcom="smtp.163.com";
    EmailSender es=new EmailSender();
    //es.setPramater(subject, checkinreport, destination, fountainhead, password, smtphost, smtpcom);
    es.setSubject(subject);
    es.setCheckinreport(checkinreport);
    es.setDestination(destination);
    es.setFountainhead(fountainhead);
    es.setPassword(password);
    es.setSmtphost(smtphost);
    es.setSmtpcom(smtpcom);
    boolean f =es.send();
    System.out.println(" mail send success");
    } public  boolean send() {
    System.out.println("-----"+subject+ checkinreport+ destination+ fountainhead+password+smtphost+smtpcom);
    Properties props = System.getProperties(); try {
    props.put(smtphost, smtpcom);
    } catch (Exception ex) {
    return false;
    }
    // Session session = Session.getDefaultInstance(props, null);
    props.put("mail.smtp.auth", "true");
    MyAuthenticator myauth = new MyAuthenticator(fountainhead, password);
    Session session = Session.getDefaultInstance(props, myauth);
    Message msg = new MimeMessage(session);
    InternetAddress[] toAddrs = null, ccAddrs = null; try {
    /**建立邮箱地址**/
    toAddrs = InternetAddress.parse(destination, false);
    msg.setRecipients(Message.RecipientType.TO, toAddrs); msg.setFrom(new InternetAddress(fountainhead));
    /***邮件标题**/
    msg.setSubject(subject);
    /***邮件正文***/
    msg.setText(checkinreport);
    msg.saveChanges();
    Transport.send(msg);
    return true; } catch (Exception ex) {
    ex.printStackTrace();
    System.out.println(ex);
    return false;
    }
    } public String getSubject() {
    return subject;
    } public void setSubject(String subject) {
    this.subject = subject;
    } public String getCheckinreport() {
    return checkinreport;
    } public void setCheckinreport(String checkinreport) {
    this.checkinreport = checkinreport;
    } public String getDestination() {
    return destination;
    } public void setDestination(String destination) {
    this.destination = destination;
    } public String getFountainhead() {
    return fountainhead;
    } public void setFountainhead(String fountainhead) {
    this.fountainhead = fountainhead;
    } public String getPassword() {
    return password;
    } public void setPassword(String password) {
    this.password = password;
    } public String getSmtphost() {
    return smtphost;
    } public void setSmtphost(String smtphost) {
    this.smtphost = smtphost;
    } public String getSmtpcom() {
    return smtpcom;
    } public void setSmtpcom(String smtpcom) {
    this.smtpcom = smtpcom;
    }}
     
    class MyAuthenticator extends javax.mail.Authenticator {
    private String strUser;
    private String strPwd; public MyAuthenticator(String user, String password) {
    this.strUser = user;
    this.strPwd = password;
    } protected PasswordAuthentication getPasswordAuthentication() {
    return new PasswordAuthentication(strUser, strPwd);
    }
    }
      

  6.   

    我用上面的程序测试,怎么出现下面报错:  是包找不到,还是冲突?Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/activation/registries/LogSupport
    at javax.activation.MailcapCommandMap.<init>(MailcapCommandMap.java:140)
    at javax.activation.CommandMap.getDefaultCommandMap(CommandMap.java:61)
    at javax.activation.DataHandler.getCommandMap(DataHandler.java:153)
    at javax.activation.DataHandler.getDataContentHandler(DataHandler.java:611)
    at javax.activation.DataHandler.writeTo(DataHandler.java:315)
    at javax.mail.internet.MimeUtility.getEncoding(MimeUtility.java:248)
    at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1268)
    at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2012)
    at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1980)
    at EmailSender.send(EmailSender.java:93)
    at EmailSender.main(EmailSender.java:63)