首页 /  技术专区  /  Java 宽屏模式 >

java使用qq邮箱发送电子邮件email

我们在开发过程中,很有可能需要使用java调用邮箱的接口,来发送给指定邮箱邮件。本篇文章主要讲解通过java编写使用qq邮箱发送邮件的例子。

首先,我们要去设置一下qq邮箱的授权码,参考:https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

然后我们需要引入关于mail的maven依赖:

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

接着我们编写邮件发送工具类,MailUtils.java:

package com.allen.utils;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import com.sun.mail.util.MailSSLSocketFactory;

/**
 * 邮件发送工具类
 * */

public class MailUtils {

    private static final String MY_EMAIL = "************@qq.com"; //这里填的qq邮箱,也就是发件人
    private static final String MY_CODE = "*************"; //这里填入刚刚我们配置的qq邮箱授权码

    public static void sendMail(String to, String vcode) throws Exception {

        //设置发送邮件的主机 smtp.qq.com
        String host = "smtp.qq.com";

        //1.创建连接对象,连接到邮箱服务器
        Properties props = System.getProperties();

        //Properties 用来设置服务器地址,主机名 。。 可以省略
        //设置邮件服务器
        props.setProperty("mail.smtp.host", host);
        props.put("mail.smtp.auth", "true");

        //SSL加密
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        props.put("mail.smtp.ssl.enable", "true");
        props.put("mail.smtp.ssl.socketFactory", sf);

        //props:用来设置服务器地址,主机名;Authenticator:认证信息
        Session session = Session.getDefaultInstance(props, new Authenticator() {

            @Override
            //通过密码认证信息
            protected PasswordAuthentication getPasswordAuthentication() {
                //new PasswordAuthentication(用户名, password);
                //这个用户名密码就可以登录到邮箱服务器了,用它给别人发送邮件
                return new PasswordAuthentication(MY_EMAIL, MY_CODE);

            }
        });

        try {

            Message message = new MimeMessage(session);

            //2.1设置发件人:
            message.setFrom(new InternetAddress(MY_EMAIL));

            //2.2设置收件人 这个TO就是收件人
            message.setRecipient(RecipientType.TO, new InternetAddress(to));

            //2.3邮件的主题
            message.setSubject("java测试发送邮件");

            //2.4设置邮件的正文 第一个参数是邮件的正文内容 第二个参数是:是文本还是html的连接
            message.setContent(vcode, "text/html;charset=UTF-8");

            //3.发送一封激活邮件
            Transport.send(message);


        } catch (MessagingException mex) {
            mex.printStackTrace();
        }

    }


}

测试:

@Test
public void mailTest(){
    try {
        MailUtils.sendMail("liqinglin0314@aliyun.com", "哈哈哈,这是一条测试信息~~~");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

image.png


头像
0/200
图片验证码