javamail发送邮件程序报错

J2EE 码拜 8年前 (2016-03-15) 1479次浏览
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.hirain.sendmail.message.SendMail.sendMailOfValidate(SendMail.java:168)
at com.hirain.sendmail.message.SendMail.senMail(SendMail.java:196)
at com.hirain.sendmail.message.SendMail.main(SendMail.java:206)


解决方案

10

你看下你的代码中能否用了Transport.send(msg)这样的方法
换成下面的试试:
Transport transport=session.getTransport();
transport.send(msg,new Address[]{new InternetAddress(“xxx@sina.com”)});

90

/**
     * 邮件发送的方法
     * @param to 收件人
     * @param subject 主题
     * @param content 内容
     * @return 成功或失败
     */
    public static boolean send(String to, String subject, String content){
        // 第一步:创建Session
        Properties props = new Properties();
        //指定邮件的传输协议,smtp(Simple Mail Transfer Protocol 简单的邮件传输协议)
        props.put("mail.transport.protocol", "smtp");
        //指定邮件服务器
        //props.put("mail.smtp.auth", "true"); 
        props.put("mail.host","smtp.163.com");
        //指定邮件的发送人(您用来发送邮件的服务器,例如您的163\sina等邮箱)
        props.put("mail.from", "*******@163.com");
        Session session = Session.getDefaultInstance(props);
        // 开启调试模式
        session.setDebug(true);
        try {
            // 第二步:获取邮件发送对象
            Transport transport = session.getTransport();
            // 连接邮件服务器,链接您的163、sina邮箱,用户名(不带@163.com,登录邮箱的邮箱账号,不是邮箱地址)、密码
            transport.connect("*******", "*******");
            // 第三步:创建邮件消息体
            MimeMessage message = new MimeMessage(session);
            //邮件的主题
            message.setSubject(subject);                               
            //邮件的内容
            message.setContent(content, "text/html;charset=utf-8");        
            //邮件发送时间
            message.setSentDate(new Date());                            
            // 第四步:发送邮件
            //第一个参数:邮件的消息体
            //第二个参数:邮件的接收人,多个接收人用逗号隔开(test1@163.com,test2@sina.com)
            transport.sendMessage(message, InternetAddress.parse(to));
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
 
    public static void main(String[] args) {
        //您要发送给谁,标题,内容
        send("*******@qq.com", "测试邮件", "你好你好你好你好你好你好你好你好");
    }

这是之前写的一个工具类,刚才测试的时候竟然也报了553,查了一下说是要用客户端授权码登陆,你可以登上163邮箱去设置一下,改完之后用授权码登陆居然又变成了554错误,一看是当成垃圾邮件处理了,改了下标题成功。
ps:果然还是一个慢慢调试的过程,祝你成功


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明javamail发送邮件程序报错
喜欢 (0)
[1034331897@qq.com]
分享 (0)