小弟正在搞JavaMile,但每次都报错javax.mail.AuthenticationFailedException 
寻求发信服务器要求身份验证的解决办法

解决方案 »

  1.   

    http://blog.csdn.net/kevinliuu/archive/2006/07/07/888353.aspx
      

  2.   

    这是我自己写的,问题已经得到解决啦。你试试看。
    Properties props = new Properties();
    props.put("mail.smtp.auth", "true"); //这样才能通过验证
    这2句是通过验证的关键。
    package pac;
    import javax.mail.*;
    import javax.mail.internet.*;
    import java.util.*;
    public class SendMail
    {
    private String host=null;
    private String from=null;
    private String username=null;
    private String password=null;
    private String subject=null;
    private String content=null;
        public SendMail()
        {
        host=null;
        from=null;
        username=null;
        password=null;
        subject=null;
        content=null;
        }
        public void setHost(String str)//设置邮件服务器。
        {
        this.host=str;
        }
        public String getHost()
        {
        return this.host;
        }
        public void setFrom(String str)//设置发送地址
        {
        this.from=str;
        }
        public String getFrom()
        {
        return this.from;
        }
        public void setUsername(String str)//设置登陆名
        {
        this.username=str;
        }
        public String getUsername()
        {
        return this.username;
        }
        public void setPassword(String str)//设置登陆密码
        {
        this.password=str;
        }
        public String getPassword()
        {
        return this.password;
        }
         public void setSubject(String str)//设置主题
        {
        this.subject=str;
        }
        public String getSubject()
        {
        return this.subject;
        } public void setContent(String str)//设置内容
        {
        this.content=str;
        }
        public String getContent()
        {
        return this.content;
        }
        
        public String[] getTo(String str)//获取多发邮件的地址,每2个邮件用逗号隔开。
        {
        char temp[]=str.toCharArray();
        int num=0;
        if(str!=null&&!str.equals(""))
            num=1;
        else 
            return null;
        for(int i=0;i<temp.length;i++)//确定一共有多少个邮件地址
        {
        if(temp[i]==',')
            num++;
        }
        System.out.println(num);
        String []To=new String [num];
        To[0]="";
        int j=0;
        for(int i=0;i<temp.length;i++)
        {
        if(temp[i]==',')
        {
        j=j+1;
        i=i+1;
        To[j]="";
        }
        To[j]+=temp[i];
        }
        return To;
        }
        public boolean SendMailto(String tto)//发送邮件。
        {
        try
        {
        // Get system properties
        Properties props = new Properties();
        // Setup mail server
            props.put("mail.smtp.host", host);
            props.put("mail.smtp.auth", "true"); //这样才能通过验证
            // Get session
            Session session = Session.getDefaultInstance(props);        // watch the mail commands go by to the mail server
            session.setDebug(true);        // Define message
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            String to[]=getTo(tto);
            for(int i=0;i<to.length;i++)
            {
                 message.addRecipient(Message.RecipientType.TO,new InternetAddress(to[i]));
            }
            message.setSubject(this.subject);
            message.setText(this.content);
            // Send message
            message.saveChanges();
            Transport transport = session.getTransport("smtp");
            transport.connect(host,username,password);
            transport.sendMessage(message, message.getAllRecipients());
            //close transport
            transport.close();
            return true;
            }
            catch(MessagingException m)
            {
               System.out.println(m.toString());
               return false;
            }
        }
        public static void main(String []args)
        {
        SendMail mail=new SendMail();
        mail.setContent("This is a test!");
        mail.setFrom("[email protected]");
        mail.setHost("smtp.163.com");
        mail.setUsername("user");
        mail.setSubject("Test");
        mail.setPassword("password");
        mail.SendMailto("abc163.com,[email protected]");
        }
        
    }
      

  3.   

    TO: hefei0603(风雨) 
     需要在发信程序里加些什么啊?
      

  4.   

    如果是用我写的类用下面的方法调用就行了。如果你需要附件功能的话可以到网上查下,把相应代码加入就行了。
    public static void main(String []args)
        {
        SendMail mail=new SendMail();//实例化类
        mail.setContent("This is a test!");//设置内容
        mail.setFrom("[email protected]");//设置发信邮箱
        mail.setHost("smtp.163.com");//设置邮件服务器地址
        mail.setUsername("user");//设置用户名
        mail.setSubject("Test");//设置主题
        mail.setPassword("password");//设置密码
        mail.SendMailto("abc163.com,[email protected]");//发送邮件,参数为接受邮件者的邮件地址,支持群发,每2个邮件地址之间用逗号隔开。
        }
    在发邮件之前设定好邮箱服务器,发邮件的地址,用户名,密码,邮件主题,邮件内容。设定顺序没有要求。具体发邮件的步骤请参见SendMailto(String)函数。
      

  5.   

    问题解决~
    可我发送的是HTML样式的页面,不是纯text文本,又该怎么解决呢?
    多谢~~
      

  6.   

    给你个看JAVAMAIL资料的地址吧,你想了解的问题应该都有。
    http://www.jspcn.net/htmlnews/B1097670330534.html