错误:
javax.mail.SendFailedException: Sending failed;
  nested exception is:
class javax.mail.AuthenticationFailedException
at javax.mail.Transport.send0(Transport.java:218)
at javax.mail.Transport.send(Transport.java:80)
at com.redstoneinfo.auwebsite4customer.action.SendMailAction.sendMail(SendMailAction.java:199)
at com.redstoneinfo.auwebsite4customer.action.SendMailAction.main(SendMailAction.java:226)
javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:264)
at javax.mail.Service.connect(Service.java:134)
at javax.mail.Service.connect(Service.java:86)
at com.sun.mail.smtp.SMTPTransport.connect(SMTPTransport.java:95)
at javax.mail.Transport.send0(Transport.java:162)
at javax.mail.Transport.send(Transport.java:80)
at com.redstoneinfo.auwebsite4customer.action.SendMailAction.sendMail(SendMailAction.java:199)
at com.redstoneinfo.auwebsite4customer.action.SendMailAction.main(SendMailAction.java:226)

解决方案 »

  1.   

    验证失败,因为现在基本上发送邮件都采用e-smtp协议,所以发送要用验证.
      

  2.   

    package yaoyao.classes;import javax.mail.*;
    /**
     * <p>Title:SMTP发送验证 </p>
     * <p>Description:发送邮件时,验证发送者是否有权发送邮件 </p>
     * <p>Copyright: Copyright (c) 2004</p>
     * <p>Company: </p>
     * @author 廖伟清
     * @version 1.0
     */
    public class MailAuthenticator extends Authenticator{
      private String  name=null;//用户名
      private String password=null;//用户密码  public MailAuthenticator(){}
      /**
       * 建立一个函数
       * @param name 用户名
       * @param password 用户密码
       */
      public MailAuthenticator(String name, String password){
        this.name=name;
        this.password=password;
      }
      /**
       * 设置用户名和密码开关
       */
      public void setName(String name){
        this.name=name;
      }
      public void setPassword(String password){
        this.password=password;
      }
      /**
       * 提供验证的用户名和密码
       * @return PassworAuthentication 密码验证
       */
      public PasswordAuthentication getPasswordAuthentication(){
        return new PasswordAuthentication(name, password);
      }
    }
      

  3.   

    package yaoyao.classes;import java.io.*;
    import javax.activation.*;public class StringDataSource implements javax.activation.DataSource{
      private String data;
      private String type;  public StringDataSource(String data, String type){
        this.data=data;
        this.type=type;
      }  public InputStream getInputStream()throws IOException {
        if(data==null){
          throw new IOException("Data is null");
        }
        return new ByteArrayInputStream(data.getBytes());
        //return new StringBufferInputStream(new String(data.getBytes("iso-8859-1"), "GB2312"));
      }
      public OutputStream getOutputStream() throws IOException{
        throw new IOException("Data is readonly");
      }
      public String getContentType(){
        return type;
      }
      public String getName(){
        return "StringDataSource";
      }
    }
      

  4.   

    package yaoyao.classes;import java.util.*;
    import java.io.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;import yaoyao.classes.*;public class ReMail{
      //邮件发送基本信息
      String smtpHost="smtp.sohu.com";//发送主机
      String mailFrom="[email protected]";//发件者地址
      String mailUser="gelikejie";//发件者用户名
      String mailPassword="44348214se";//用户名密码
      //邮件消息包内容
      String mailTo=null;//收件者地址
      String mailSubject=null;//收件者主题
      String mailContent=null;//收件者内容  //设置基本信息开关
      public void setMailTo(String mailTo){
        this.mailTo=mailTo;
      }
      public void setMailSubject(String mailSubject){
        this.mailSubject=mailSubject;
      }
      public void setMailContent(String mailContent){
        this.mailContent=mailContent;
      }  public String getMailTo(){
        return mailTo;
      }
      public String getMailSubject(){
        return mailSubject;
      }
      public String getMailContent(){
        return mailContent;
      }  public void send(){
        try{
          //设置java mail属性,并添入数据源
          Properties props = System.getProperties();
          props.put("mail.smtp.host", smtpHost);
          props.put("mail.smtp.auth", "true");
          //设置发送验证机制
          Authenticator auth = new MailAuthenticator(mailUser, mailPassword);
          //建立一个默认会话
          Session mailSession = Session.getDefaultInstance(props, auth);
          //建立消息对象,并设置有消息包内容
          Message msg = new MimeMessage(mailSession);
          msg.setFrom(new InternetAddress(mailFrom));
          //设置收件者地址
          msg.setRecipients(Message.RecipientType.TO,
                            InternetAddress.parse(getMailTo()));
          msg.setSubject(getMailSubject());//设置邮件的标题
          //设置并处理信息内容格式转为text/html
          msg.setDataHandler(new DataHandler(
              new StringDataSource(getMailContent(), "text/html")));
          //发送邮件
          Transport.send(msg);
        }catch(Exception e){}
      }
    }