使用Java发送QQ邮件

前些日子做项目的时候,使用了Java向用户发送QQ邮件,在这里做一些记录。

简述

1、要使用Java实现发送邮件,就要有Java提供的jar依赖包,这里只是最简单的发送文本邮件(至于带附件的、带图片的,博主也在学习中,请各位大侠参考其他博主的文章,这里暂不作介绍),只用到了两个jar包:activation.jar、mail.jar,分享下载地址:https://pan.baidu.com/s/1QjsXzcb5-u5adikJAsB2Iw

2、在发送之前,要将发件人邮箱的SMTP服务打开,腾讯默认是对用户关闭这一服务的。假如要使用你自己的QQ号作为发件人,打开你的QQ邮箱——设置——账户——POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,将POP3/SMTP、IMAP/SMTP两个选项打开,此时会弹出一个窗口,是一个16为的口令,一定要记住,最好是保存下来!!!因为在你调用这个服务实现发送邮件时,我们是需要提供这个口令的。

3、将第一步下载的jar包添加到项目中,然后撸一篇代码:

package BaseDaoImpl;

import org.apache.tomcat.util.net.openssl.ciphers.Authentication;

import javax.mail.*;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class EmailSend {
    public void sendEmail(){
        /**
         *  第一步,确定连接
         *  因为这一步骤涉及到的信息比较多,所以这里用Properties保存,在接下来使用的时候会很方便,直接在Properties环境下创建邮件
         * */
        Properties props=new Properties();  //记录邮箱的一些属性
        props.put("mail.smtp.auth", "true");  //表示使用SMTP发送邮件,须经过身份验证
        props.put("mail.smtp.host", "smtp.qq.com");  //此处填写SMTP服务器,我们是用QQ,所以写QQ邮箱的服务器
        props.put("mail.smtp.port", "587");  //端口号,QQ邮箱提供了两个端口,随意选一个,此处用587
        props.put("mail.user", "发件人@qq.com");  // 你的QQ账号,即发件人
        props.put("mail.password", "****************");  // 此处的密码是腾讯提供的16位STMP口令


        /**
         *  第二步,验证/获得权限
         *  构建授权信息,用于SMTP身份验证
         * */
        Authenticator authenticator = new Authenticator() {
            //返回一个PasswordAuthentication类型的对象
            protected PasswordAuthentication getPasswordAuthentication() {
                String userName = props.getProperty("mail.user");
                String userPwd = props.getProperty("mail.password");
                return new PasswordAuthentication(userName, userPwd);  //将读取到的用户名和密码拿过来
            }
        };


        /**
         *  第三步,创建邮件
         *  使用环境属性和授权信息,创建邮件会话
         * */
        Session mailSession = Session.getInstance(props, authenticator);
        MimeMessage message = new MimeMessage(mailSession);  //通过Session对象创建邮件消息


        /**
         *  第四步,设置发件人
         * */
        InternetAddress sendUser = null;
        try {
            sendUser = new InternetAddress(props.getProperty("mail.user"));
            message.setFrom(sendUser);  //通过MimeMessage对象的setFrom()方法设置发件人,需要一个InternetAddress对象
        } catch (MessagingException e) {
            e.printStackTrace();
        }

        /**
         *  第五步,设置收件人
         * */
        InternetAddress getUser = null;
        try {
            getUser = new InternetAddress("收件人@qq.com");

             /* Address[] addresses=new Address[]{
                    new InternetAddress("收件人@qq.com")
            };*/
            //Address[] addresses=new Address[]{InternetAddress对象};
            //Message.RecipientType.TO代表收件人
            //Message.RecipientType.CC代表抄送
            //Message.RecipientType.BCC代表暗送  用于群发的时候,不让别人看到其他的收件人
            //第二个参数是收件人的地址,也可以是一个Address[]数组,用于群发的场景,群发用message.setRecipients(Message.RecipientType.TO, Address[])
            message.setRecipient(Message.RecipientType.TO, getUser);  //通过MimeMessage对象的setRecipient()方法设置收件人,需要一个InternetAddress对象
        } catch (MessagingException e) {
            e.printStackTrace();
        }


        /**
         *  第六步,设置邮件标题和内容
         * */
        try {
            // 设置邮件标题
            message.setSubject("测试邮件");
            // 设置邮件的内容体
            message.setContent("通过Java发送QQ邮件", "text/html;charset=UTF-8");

            /**
             *  最后一步,发送邮件,需要一个邮件对象作为参数
             * */
            Transport.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

4、运行这篇代码,收到邮件,完成。


猜你喜欢

转载自blog.csdn.net/wzy18210825916/article/details/80961694