linux环境下网络配置有问题,无法找到你在程序中配置的SMTP SERVER。

解决方案 »

  1.   

    现在还有一个问题就是会出现这样的错误:
    javax.mail.MessagingException: 553 Your envelope sender is different from the authuser.
    请问是怎么回事啊
      

  2.   

    553...
    好像是发信人要经过SMTP的身份严整
      

  3.   

    我的SMTP的验证是这样写:
    props = System.getProperties();
    props.put("mail.smtp.auth","true");
     mimeMsg.setContent(mp);
     mimeMsg.saveChanges();
    Session mailSession = Session.getInstance(props,null);
    Transport transport = mailSession.getTransport("smtp");
    transport.connect((String)props.get("mail.smtp.host"),username,password);
    transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
     transport.send(mimeMsg);
      

  4.   

    但是现在却出现了这样的错误:
    javax.mail.SendFailedException: Sending failed;
      nested exception is: 
    javax.mail.AuthenticationFailedExceptiontransport.sendMessage
      

  5.   

    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="gelikeji";//发件者用户名
      String mailPassword="44348214";//用户名密码
      //邮件消息包内容
      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){}
      }
    }
      

  6.   

    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);
      }
    }
      

  7.   

    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";
      }
    }
      

  8.   

    StringDataSource
      是为了实现发送Html
    MailAuthenticator
      验证这是我初学的一个邮件转发的。尚末完善。希望对你有帮助。如果有兴趣再深入下去,
    qq 50707640
    我现在纳闷编码!!
      

  9.   

    哦顺带提一下。最早使用的是smtp协议,所以发送者不要通过验证。现在大多数邮件发送都采用E-smtp协议。esmtp协议乱发邮件的漏洞。所以,现在邮件发送要验证了,如果验证失败,就会返回
    javax.mail.SendFailedException: Sending failed;
      nested exception is: 
    javax.mail.AuthenticationFailedException
    如果,你采用验证,这个属性mail.smtp.auth应该要设置为true,而且,你不只是要下载mail.jar包,还要下载jaf(java激活框架)