参考:
https://wwwblogs/zhaideyou/p/5851219.html
https://blog.csdn/qq_44913138/article/details/91439510
https://wwwblogs/xdp-gacl/p/4209586.html
https://wwwblogs/ysocean/p/7666061.html

第一步:引入mail包

通过maven来引入或者下载javax.mail包然后引入

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

第二步:编写mail类

下面附一个简单版本的,在实例测试中附单例模式的
需要注意在new PasswordAuthentication时,用户名为邮箱号,密码一般需要去获取邮箱授权码,不然会报535错误
QQ邮箱授权码可以参考QQ授权码

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


public class MailUtils {
    /**
     *
     * @param email     接收者邮箱
     * @param subject   邮件主题
     * @param emailMsg  邮件内容
     * @throws AddressException
     * @throws MessagingException
     */
    public static void sendMail(String email, String subject,String emailMsg)
            throws AddressException, MessagingException {
        //创建配置文件
        Properties props = new Properties();
        //设置发送时遵从SMTP协议
        props.setProperty("mail.transport.protocol", "SMTP");
        /*
         * 发送邮件的域名
         * smtp.xx
         * smtp.qq则代表发送邮件时使用的邮箱域名来自qq
         * smtp.163则代表发送邮件时使用的邮箱域名来自163
         */
        props.setProperty("mail.host", "smtp.qq");
        //设置用户的认证方式auth
        props.setProperty("mail.smtp.auth", "true");
        Authenticator auth = new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                //return new PasswordAuthentication("用户名", "密码");
                //注意qq邮箱需要去qq邮箱的设置中获取授权码,并将授权码作为密码来填写
                return new PasswordAuthentication("xxxxx@qq", "nilbnqjekzmtbcgd");
            }
        };
        //创建session域
        Session session = Session.getInstance(props, auth);
        Message message = new MimeMessage(session);
        //设置邮件发送者,与PasswordAuthentication中的邮箱一致即可
        message.setFrom(new InternetAddress("xxxxx@qq"));
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(email));
        //设置邮件主题
        message.setSubject(subject);
        //设置邮件内容
        message.setContent(emailMsg, "text/html;charset=utf-8");
        //发送邮件
        Transport.send(message);
    }
}

第三步:测试

public class EmailTest {
    public static void main(String[] args) throws MessagingException {
        MailUtils.sendMail("xxxxxx@qq", "阿里Offer", "恭喜你成功入职阿里");
    }
}

附:实战案例

进行用户注册发送邮件确认案例
注意:
①在邮件中发送超链接的时候链接一定要加上http://

②在阿里云等服务器上,一定要改变port端口号为465,而不要再使用25端口(因为阿里云等默认禁用25号端口)

public class MailUtil {
    private static Session session;
    private static MailUtil mailUtil;

    public static MailUtil getMailUtil() {
        //第一次创建mailUtil时进行配置
        if (mailUtil == null) {
            Properties props = new Properties();
            // 发送邮件的服务器的IP和端口
            //设置发件人的SMTP的服务器地址
            props.put("mail.smtp.host", "smtp.qq");
            props.put("mail.smtp.port", 465);
            props.put("mail.smtp.ssl.enable", "true");
            //设置传输协议
            props.setProperty("mail.transport.protocol", "smtp");
            //设置用户的认证方式auth
            props.setProperty("mail.smtp.auth", "true");
            MailSSLSocketFactory sf = null;
            try {
                sf = new MailSSLSocketFactory();
                sf.setTrustAllHosts(true);
            } catch (GeneralSecurityException e1) {
                e1.printStackTrace();
            }
            props.put("mail.smtp.ssl.socketFactory", sf);
            props.put("mail.smtp.socketFactory.port", 465);
            session = Session.getDefaultInstance(props, new Authenticator() {
                @Override
                public PasswordAuthentication getPasswordAuthentication() {
                  //发件人邮件用户名、密码,xxxx自己设置
                    return new PasswordAuthentication("xxxxxx@qq", "nilbnqjekzmtbcgd");
                }
            });
            session.setDebug(true);
            mailUtil = new MailUtil();
        }
        return mailUtil;
    }

    //发送邮件
    public void sendEmail(String email, String subject, String content) {
        try {
            // 设置session,和邮件服务器进行通讯。
            MimeMessage message = new MimeMessage(session);
            // 设置邮件主题
            message.setSubject(subject); 
            // 发送 HTML 消息, 可以插入html标签
            message.setContent(content, "text/html;charset=UTF-8");
            // 设置邮件发送日期
            message.setSentDate(new Date());
            //设置发送邮件使用的邮箱地址
            Address address = new InternetAddress("941794689@qq");
            message.setFrom(address);
            // 设置邮件接收方的地址
            Address toAddress = new InternetAddress(email);
            message.addRecipient(Message.RecipientType.TO, toAddress);
            // 发送邮件
            Transport.send(message);
            System.out.println("send ok!");
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
 }
//注册验证
public String registerUser(String email, String name, String pass) {
        BmbUser userEntity = bmbUserMapper.isExist(email);
        String result;
        if (userEntity == null) {
            System.out.println("不存在");
            userEntity = new BmbUser();
            userEntity.setEmail(email);
            userEntity.setName(name);
            userEntity.setPass(pass);
            String code = RandomUtil.getRandom();    //生成随机字符串
            userEntity.setVerifyCode(code);
            userEntity.setCreateTime(TimeUtil.getCurrentTime());
            userEntity.setUpdateTime(TimeUtil.getCurrentTime());
            userEntity.setIsVerify(0);
            userService.saveOrUpdate(userEntity);
            //发送邮件
            MailUtil mailUtil = MailUtil.getMailUtil();
            //内容中使用html
            mailUtil.sendEmail(email,"【BmbHome】身份验证邮件(请不要回复此邮件)",
             "<p>尊敬的用户:</p>\n" +
                    "<p>我们诚挚的欢迎您加入“平衡之家”,为追求身心平衡而努力!为自己的幸福而努力,给自己带来快乐和意义!</p>\n" +
                    "<p>“平衡之家”帮助您获得身心平衡,为您提供一条和谐医患关系的平衡之道!</p>\n" +
                    "<p>“平衡之家”提供如下功能:</p>\n" +
                    "<p>①您可以对网站文章进行评论和讲诊疗经历发表到网站上与大家分享;</p>\n" +
                    "<p>②您可以通过网站获取自己的电子病历;</p>\n" +
                    "<p>③您可以通过网站与医生实时互动;</p>\n" +
                    "<p>④您可以通过网站接受远程预约诊疗,接受医师的远程诊断或者心理辅导、进行心理咨询。 更多功能正在建设中。</p>\n" +
                    "<p>请点击下面链接完善个人资料,完成注册:</p>\n" +
                    "<a href=" + "\"" + Config.Url + "/user/activate?email=" + email + "&code=" + code + "\"" + ">点击此处完成注册</a>\n" +
                    "<p>平衡之家 </p>");
            result = "注册成功,请到邮箱点击链接激活";
        } else {
            result = "该用户已注册";
            System.out.println("存在");
        }

        return result;
    }

更多推荐

Java+Maven实现Mail自动发送邮件功能