使用Java发送邮件很简单,首先搞个邮箱,我们就以qq邮箱为例,登录qq邮箱,在设置中开启IMAP/SMTP服务,获取授权码即可,这样前期的邮件设置工作就完成了。
1、获取邮箱授权码
2、在Java程序中调用接口发送邮件
Java发送邮件需要先配置mail这个jar包,如果你的项目是maven,可在pom.xml中直接配置。
<!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
<dependency >
<groupId >javax.mail</groupId >
<artifactId >mail</artifactId >
<version >1.4.7</version >
</dependency >
如果需要下载jar包导入的话,点击我跳转,然后下载jar包即可。
然后复制下面的代码,在main函数中测试即可,记得修改静态变量哦,设置你的邮箱和授权码
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.List;
import java.util.Properties;
/**
* @description: 邮箱工具类
* @author: 五香麻辣大白兔 51bishe.site
* @time: 2021/5/14 12:01
*/
public class MailUtil {
// 发送人
public static final String FROM_ARRDESS = "你的邮箱地址";
// qq邮箱授权码
public static final String AUTH_CODE = "你的邮箱授权码";
/**
* 发送单封邮件
* @param title 邮件标题
* @param content 邮件内容
* @param receiveAddress 收件人邮箱地址
* @throws MessagingException
*/
public static void sendTextMail (String title, String content, String receiveAddress) throws MessagingException {
//把收件人放入对象中
Session session = createSession();
Message message = createMessage(session, title, content);
message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiveAddress));
sendMail(session, message);
}
/**
* 批量发送邮件
* @param title 邮件标题
* @param content 邮件内容
* @param addressList 收件人邮箱地址数组
* @throws MessagingException
*/
public static void batchSendTextMail (String title, String content, List<String> addressList) throws MessagingException {
//把收件人放入对象中
InternetAddress[] recipients = new InternetAddress[addressList.size()];
for(int i = 0 ; i< addressList.size() ;i++){
recipients[i] = new InternetAddress(addressList.get(i));
}
Session session = createSession();
Message message = createMessage(session, title, content);
message.setRecipients(Message.RecipientType.TO, recipients);
sendMail(session, message);
}
/**
* 产生链接
* @return
*/
public static Session createSession () {
Properties properties = new Properties();
// 连接协议
properties.put("mail.transport.protocol", "smtp");
// 主机名
properties.put("mail.smtp.host", "smtp.qq.com");
// 端口号
properties.put("mail.smtp.port", 465);
properties.put("mail.smtp.auth", "true");
// 设置是否使用ssl安全连接 ---一般都使用
properties.put("mail.smtp.ssl.enable", "true");
// 设置是否显示debug信息 true 会在控制台显示相关信息
properties.put("mail.debug", "true");
// 得到回话对象
return Session.getInstance(properties);
}
/**
* 创建message对象
* @param session
* @param title
* @param content
* @return
* @throws MessagingException
*/
public static Message createMessage (Session session, String title, String content) throws MessagingException {
// 获取邮件对象
Message message = new MimeMessage(session);
// 设置发件人邮箱地址
message.setFrom(new InternetAddress(FROM_ARRDESS));
// 设置邮件标题
message.setSubject(title);
// 设置邮件内容
message.setContent(content, "text/html;charset=gb2312");
return message;
}
/**
* 发送邮件
* @param session
* @param message
* @throws MessagingException
*/
public static void sendMail(Session session, Message message) throws MessagingException {
// 得到邮差对象
Transport transport = session.getTransport();
// 连接自己的邮箱账户
// 密码为QQ邮箱开通的stmp服务后得到的客户端授权码
transport.connect(FROM_ARRDESS, AUTH_CODE);
// 发送邮件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
}
其中content是支持html代码的,可以设置文字的样式、插入图片。
如果感觉此篇文章对你有用,麻烦你在同学中帮忙宣传下,谢谢。
个人博客:www.51bishe.site