测试时候的错误提示是:
Exception in thread "main" javax.mail.MessagingException: Unknown SMTP host: smtp.126.com;
  nested exception is:
java.net.UnknownHostException: smtp.126.com
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1280)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
at javax.mail.Service.connect(Service.java:275)
at javax.mail.Service.connect(Service.java:156)
at mail.Mail.sendBatch(Mail.java:216)
at mail.Mail.main(Mail.java:251)
Caused by: java.net.UnknownHostException: smtp.126.com
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:232)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1250)
... 5 more

解决方案 »

  1.   

    错误提示很明显啊,是smtp.126.com为一个“Unknown”的smtp主机。现在很多smtp都不支持,这个126的LZ确认是正常可用的吗?
    最好自己本机上建一个smtp服务器,再发自己试下。
      

  2.   

    package com.nml.roims.job;import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.*;import java.io.IOException;
    import java.util.*;
    import javax.mail.internet.*;import com.newmodern.eve.logger.Logger;
    import com.newmodern.eve.system.SystemConfig;/**
     * <p>Title:        SendingEmail </p>
     * <p>Description:  </p>
     * <p>Copyright:    Copyright (c) 2007</p>
     * <p>Company:      New Modern Technology</p>
     * @author          Leo Zhang
     * @version         $Id: SendingEmail.java,v 1.7 2007/05/27 04:24:02 his_jack Exp $
     */public class SendingEmail {
    private String host = ""; private String user = ""; private String password = ""; private Properties props = null; private Session mailSession = null;// 是否在控制台显示debug信息 private Transport transport = null; public boolean isValidConfig = false;

    private Logger logger = Logger.getInstance(SendingEmail.class); public SendingEmail() {
    setHost(getEmailConfig("severHostOfSenderEmail"));// 指定要使用的邮件服务器 setAccount(getEmailConfig("emailAddressOfSender"),// 设置发送者email帐号
    getEmailConfig("emailPasswordOfSender")); // 设置发送者email密码 checkConfigValid(); if (isValidConfig)
    conectServer();
    } private void checkConfigValid() {
    if (host != null && !"".equals(host))
    isValidConfig = true;
    else
    logger.info("The configuration of the Sender's Email for 'Remind Emial per huor'"
    +" is fail now,Please check the file-->config.properties !");
    } private void conectServer() {
    props = new Properties();
    props.put("mail.smtp.host", host);// 指定SMTP服务器

    thisAuthenticator auth = null;

    if(user != null && !"".equals(user) && password != null && !"".equals(password)){
    props.put("mail.smtp.auth", "true"); 
    auth = new thisAuthenticator(user, password);
    }
    mailSession = Session.getDefaultInstance(props, auth != null ? auth : null);
    mailSession.setDebug(false);// 是否在控制台显示debug信息
    try {
    transport = mailSession.getTransport("smtp");
    transport.connect();
    logger.info("transport.connect successfully-->("+host+","+user+")");
    } catch (MessagingException e) {
    e.printStackTrace();
    }

    } private void setHost(String host) {
    this.host = host;
    } private void setAccount(String user, String password) {
    this.user = user;
    this.password = password;
    }

    public void send(List to, List CC, String subject, String content,
    List attachment) {
    send(this.user, to, CC, subject, content, attachment);
    }

    public void send(String virtualSender, List to, List CC, String subject, String content,
    List attachment) {
    try {
    MimeMessage message = new MimeMessage(mailSession);
    logger.info("the virtual sender is-->("+virtualSender+")");
    message.setFrom(new InternetAddress(virtualSender));// 发件人
    for(int i=0;i<to.size();i++){
    if(to.get(i)!=null && !"".equals(to.get(i)))
    message.addRecipient(Message.RecipientType.TO,
    new InternetAddress((to.get(i)).toString()));// 收件人
    }
    for(int i=0;i<CC.size();i++){
    if(CC.get(i)!=null && !"".equals(CC.get(i)))
    message.addRecipient(Message.RecipientType.CC, 
    new InternetAddress((CC.get(i)).toString()));// 收件人
    } message.setSubject(subject);// 邮件主题
    if (attachment == null || attachment.size() == 0)
    message.setText(content);// 邮件内容
    else {
    // *********************************************
    message.setSentDate(new Date());
    MimeBodyPart textBodyPart = new MimeBodyPart();
    textBodyPart.setText(content);

    Multipart container = new MimeMultipart();
    container.addBodyPart(textBodyPart);

    for(int i=0;i<attachment.size();i++){
    MimeBodyPart fileBodyPart = new MimeBodyPart();
    FileDataSource fds = new FileDataSource(attachment.get(i).toString());// 要发送的附件
    fileBodyPart.setDataHandler(new DataHandler(fds));
    fileBodyPart.setFileName(MimeUtility.encodeText(fds.getName(),"gb2312","B"));

    container.addBodyPart(fileBodyPart);
    }
    message.setContent(container);
    }
    message.saveChanges();

    logger.info("transport.sendMessage begin-->");
    transport.sendMessage(message, message.getAllRecipients());
    logger.info("transport.sendMessage successfully");
    } catch (Exception e) {
    logger.info("the sender("+virtualSender+")meet errors-->"+ e);
    } } public void send(List to, List CC, String subject, String content) {
    send(to, CC, subject, content, null);
    } public void stopSending() {
    try {
    if (isValidConfig)
    transport.close();
    logger.info("transport.close() successfully");
    } catch (MessagingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } public String getEmailConfig(String code) {
    try {
    return SystemConfig.getPropertyResourceBundle().getString(code);
    } catch (IOException e) {
    e.printStackTrace();
    }
    return "";
    }}
    class thisAuthenticator extends javax.mail.Authenticator {
    private String strUser;
    private String strPwd; public thisAuthenticator(String user, String password) {
    this.strUser = user;
    this.strPwd = password;
    }    protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(strUser, strPwd);
            }
        }这是我的代码,希望能帮到你
      

  3.   

    谢谢大家的帮助
    126的stmp是我在这个地址上查到的,应该没有问题,
    http://cache.baidu.com/c?word=126%3B%B5%C4%3Bsmtp%3B%CA%C7%3B%CA%B2%C3%B4&url=http%3A//www%2E126%2Ecom/help/client%5F04%2Ehtm&p=87769a4fc7825fec08e2962a17&user=baidu另外我还不会自己搭建邮件服务器所以只能跑一下测试,我在公司上网要代理,希望大家能帮忙解决一下要代理时候的问题
    错误是
      nested exception is:
    java.net.UnknownHostException: smtp.126.com
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1280)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
    at javax.mail.Service.connect(Service.java:275)
    at javax.mail.Service.connect(Service.java:156)
    at mail.Mail.sendBatch(Mail.java:218)
    at mail.Mail.main(Mail.java:253)
    Caused by: java.net.UnknownHostException: smtp.126.com
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:230)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1250)
    ... 5 more
      

  4.   

    TO: yu__yfchun125 
    你下面这类作用是什么
    import   com.newmodern.eve.system.SystemConfig;