黑马程序员技术交流社区

标题: 【黑马程序员济南】使用javamail通过QQ邮箱发送邮件 [打印本页]

作者: 大山哥哥    时间: 2017-9-26 21:19
标题: 【黑马程序员济南】使用javamail通过QQ邮箱发送邮件
本帖最后由 大山哥哥 于 2017-9-26 21:24 编辑

在项目中,常常使用某一个邮箱地址作为项目对外的公共发送邮件的地址,QQ邮箱被使用的概率不大,但是QQ邮箱的配置使用却别其他邮箱较为复杂,下面做一个简单的demo来演示如何配置并使用QQ邮箱发送邮件
1.为QQ邮箱开通POP3/SMTP服务

2.开启的时候需要使用你注册的手机号向腾讯发送一个短信(按照上面提示发送),发送成功之后点击“我已发送”

3.验证成功之后,QQ会返回一个授权码

4.在项目中引入javamail相关jar包
    demo中使用的是javax.mail-1.5.1.jar版本
5.java代码如下:
[Java] 纯文本查看 复制代码
public class MailUtils2 {
        private static String smtp_host ="smtp.qq.com"; // QQ SMTP服务
        private static String username = "使用发件人邮箱地址"; // 邮箱账户
        private static String password = "iiotqaasiaiabfgc"; // 邮箱授权码-该授权码就是在开启QQPOP3/SMTP服务时返回的那串激活码

        private static String from = "使用发件人邮箱地址"; // 邮箱账户

        public static void sendMail(String subject, String content, String to) {
                //设置发送邮件的properties
                Properties props = new Properties();
                props.setProperty("mail.smtp.host", smtp_host);
                props.setProperty("mail.transport.protocol", "smtp");
                props.setProperty("mail.smtp.auth", "true");
//                QQ 邮箱需要 SSL 加密
                props.setProperty("mail.smtp.auth", "true");
                props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
                props.setProperty("mail.smtp.port", "465");
                props.setProperty("mail.smtp.socketFactory.port", "465");
               
                //准备连接对象
                Session session = Session.getInstance(props);
                //创建邮件信息
                Message message = new MimeMessage(session);
                try {
                        message.setFrom(new InternetAddress(from));//设置发件人
                        message.setRecipient(RecipientType.TO, new InternetAddress(to));//设置收件人以及收件人地址
                        message.setSubject(subject);//邮件主题
                        message.setContent(content, "text/html;charset=utf-8");//支持富文本内容
                        Transport transport = session.getTransport();
                        transport.connect(smtp_host, username, password);
                        transport.sendMessage(message, message.getAllRecipients());//发送邮件
                } catch (Exception e) {
                        e.printStackTrace();
                        throw new RuntimeException("邮件发送失败...");
                }
        }

        public static void main(String[] args) {
                //测试
                sendMail("测试邮件", "你好a", "收件人邮箱地址");
        }
}

5.邮箱可以正常收到

作者: battlexing    时间: 2017-9-26 22:59
[您的帖子长度不符合要求]试试

作者: 播妞    时间: 2017-9-27 10:33
厉害了,讲解的很到位




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2