Java自建项目学习

Java发送邮件工具类

前言

这是我第一篇文章,自建项目,自建架构是个漫长的过程,首先一个Javaweb项目必备的功能为注册登录,原计划使用短信接口进行发送验证码注册及登录。公司有封装高可用的短信接口,奈何奈何,公司架构代码无法上传至公共平台。而自建一个发送短信接口需要到中建信平台申请一个SMS许可码,并且引入包工具类过多,个人能力有限,或许后期可能会继续优化将短信接口完成。因此退而求其次,通过邮箱发送短信验证码,进行注册登录。此文章为邮件工具类的学习使用记录

代码模块

话不多说,先上代码

基于maven项目:首先引入必备的依赖包,此处文章使用的依赖包为:

javax.mail
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mailapi</artifactId>
    <version>1.4.3</version>
</dependency>

QQ邮箱区别于其他邮箱,使用QQ邮箱发送邮件时需优先至QQ邮箱中进行设置,路径为:
邮箱->设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
打开POP3/SMTP服务 获取对应password,使用qq邮箱发送所有密码皆为此时生成对应秘钥路径如下图:
QQ邮箱打开设置并获取口令
这一步成功后,就可以放心大胆地撸代码了
具体代码块如下:仅供参考


import org.springframework.mail.SimpleMailMessage;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
/**
 * 发送邮件工具类
 *
 * @author xujie
 * @date 20210623
 */
public class SendMailUtils {
	
	//邮箱注册地址,几乎所有邮箱都是stmp.邮箱后缀,具体使用时可自行查询
    private static String HOST = "smtp.qq.com";
	//发件人邮箱
    private static String ACCOUNT = "********@qq.com";
	//邮箱密码,QQ邮箱为上一步获取的对应秘钥,其他邮箱为邮箱对应密码
    private static String PASSWORD = "*************";

    /**
     * @param toUser   发送邮件给谁
     * @param title    邮件的标题
     * @param emailMsg 邮件信息
     */
    public static void sendMail(String toUser, String title, String emailMsg) throws MessagingException {
        // 1.创建一个程序与邮件服务器会话对象 Session
        Properties props = new Properties();
        //设置发送的协议
        props.setProperty("mail.transport.protocol", "SMTP");
        //设置发送邮件的服务器
        props.setProperty("mail.host", HOST);
        // 指定验证为true
        props.setProperty("mail.smtp.auth", "true");

        // 创建验证器
        Authenticator auth = new Authenticator() {
            @Override
            public PasswordAuthentication getPasswordAuthentication() {
                //设置发送人的帐号和密码      帐号		   授权码
                return new PasswordAuthentication(ACCOUNT, PASSWORD);
            }
        };
        //会话
        Session session = Session.getInstance(props, auth);
        // 2.创建一个Message,它相当于是邮件内容
        Message message = new MimeMessage(session);
        //设置发送者
        message.setFrom(new InternetAddress(ACCOUNT));
        //设置发送方式与接收者
        message.setRecipient(RecipientType.TO, new InternetAddress(toUser));
        //设置邮件主题
        message.setSubject(title);
        //设置邮件内容
        message.setContent(emailMsg, "text/html;charset=utf-8");
        // 3.创建 Transport用于将邮件发送
        Transport.send(message);
    }

	/**
	 *main犯法测试类,抛出对应异常
	 **/
    public static void main(String[] args) throws AddressException, MessagingException {
        SendMailUtils.sendMail("********@qq.com", "工具类测试邮件", "This is the first mail send by java. And the class write by xujie.");
    }
}

待优化

此工具类亦存在待优化点,最主要的功能不完善并待优化的:只能简单发送文本文件,无法设置对应文件格式,等我后期有时间继续学习继续更新文档。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值