java发送邮件常见问题(附源代码)

java发送邮件常见问题
用java发送邮件,首先我们使用的email服务器是smtp.163.com,qq服务器现在使用非常麻烦,不赞成使用,推荐163邮箱.好进入正题,发送邮件最主要的就是发送邮箱的用户名和登录密码要正确!!!!可是163邮箱对第三方客户端验证的是授权密码,典型的报错形式见图:

这里写图片描述
这是因为你填写的密码是你在浏览器中的登录密码,而应该授权码,见图设置你的授权码:
这里写图片描述
这样就可以解决535的问题.

还有一个就是553的问题这里写图片描述
这个问题就是:163邮箱要求发送邮箱服务器和发送邮箱必须一致,在会给发邮件,比如发送邮箱服务器为:a@163.com,发送邮箱必须为a@163.com,而不是b@163.com或者ab@163.com,这样就能正常发邮件了,附上一段能够正常发邮件的代码:
Properties props = new Properties();
props.setProperty(“mail.debug”, “”);
props.setProperty(“mail.smtp.auth”, “true”);
props.setProperty(“mail.transport.protocol”, “smtp”);
props.setProperty(“mail.smtp.host”, “smtp.163.com”);
props.setProperty(“mail.smtp.port”, “25”);

    Session session = Session.getInstance(props);
    session.setDebug(true);
    Message msg = new MimeMessage(session);
    //邮件体
    MimeMultipart mmt = new MimeMultipart();
    //一个具体的邮件体
    MimeBodyPart bodyPart = new MimeBodyPart();
    //发送邮件的正文内容
    bodyPart.setContent("hello 你好,我给你发了邮件咯","text/html;charset=utf-8");
    //把邮件体添加到邮件
    mmt.addBodyPart(bodyPart);
    //设置邮件内容
    msg.setContent(mmt);
    //设置邮件标题
    msg.setSubject("账户操作");
    //发件人邮箱必须与发件服务器相同
    msg.setFrom(new InternetAddress("a@163.com"));
    Transport transport = session.getTransport();
    transport.connect("smtp.163.com", 25, 用户名, 你的密码);

    //new Address[]{new InternetAddress("b@163.com")} 收件人邮箱地址
    transport.sendMessage(msg, new Address[]{new InternetAddress(recevier)});
    transport.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值