admin管理员组文章数量:1535436
需求背景:开发中遇到开启线程在后台运行的功能,想在运行完毕后有个通知,所以就研究了如何使用email发送邮件通知。亲测可用。应该算是比较手把手教学的类型吧?不喜勿喷。
代码由百度搜集拼凑
以下代码正文
发邮件用的依赖包:
<!--发邮件的依赖--> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.1</version> </dependency>
完整代码如下:
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
public class EmailUtil {
/**
* 发送邮件,支持html语言
* @param sender 操作人
* @param sendEmailAccount 发送人邮箱账号
* @param sendEmailPassword 发送人邮箱密码,如果有安全码则写安全码
* @param sendEmailSMTPHost 发送邮件的邮箱SMTP地址
* @param receiveMailAccount 收件人邮箱
* @param mailTitle 邮件标题
* @param mailContent 邮件内容
* @return
*/
public static boolean sendEmail(String sender, String sendEmailAccount, String sendEmailPassword, String sendEmailSMTPHost, String receiveMailAccount, String mailTitle, String mailContent) {
// 发件人的邮箱地址和密码,如果有授权码,sendEmailPassword写授权码
if (StringUtils.isEmpty(sendEmailAccount) || StringUtils.isEmpty(sendEmailPassword)) {
sendEmailAccount = "xxxxxxxx@qq";
sendEmailPassword = "你自己的密码或者邮箱安全码";
}
// 发件人邮箱的 SMTP 服务器地址, 可以登录web邮箱查询
if (StringUtils.isEmpty(sendEmailSMTPHost)) {
sendEmailSMTPHost = "smtp.qq";
}
// 收件人邮箱地址
if (StringUtils.isEmpty(receiveMailAccount)) {
receiveMailAccount = "xxxxxx@qq";
}
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.host", sendEmailSMTPHost);
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.smtp.socketFactory.class", "javax.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
// 根据配置创建会话对象, 用于和邮件服务器交互
try {
Session session = Session.getDefaultInstance(props);
session.setDebug(false); // 设置为debug模式, 可以查看详细的发送 log
// 调用自己创建的createMessage方法去创建一封邮件
Message message = createMessage(sender, session, sendEmailAccount, receiveMailAccount, mailTitle, mailContent);
// 根据 Session 获取邮件传输对象
Transport transport = session.getTransport();
// 使用 邮箱账号 和 密码 连接邮件服务器, 这里的发送人邮箱必须与 message 中的发件人邮箱一致, 否则会报错
transport.connect(sendEmailAccount, sendEmailPassword);
// 发送邮件
transport.sendMessage(message, message.getAllRecipients());
// 关闭连接
transport.close();
return true;
} catch (Exception e) {
System.out.println(e);
return false;
}
}
/** * 构建一个邮件内容对象 * @param sender 发送者 * @param session 会话对象 * @param sendMailAccount 发送人邮箱账号 * @param receiveMailAccount 接收人邮箱账号 * @param mailTitle 邮件标题 * @param mailContent 邮件内容 * @return * @throws Exception */ private static Message createMessage(String sender, Session session, String sendMailAccount, String receiveMailAccount, String mailTitle, String mailContent) throws Exception {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(sendMailAccount));
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMailAccount));
// 设置邮件标题
if (StringUtils.isEmpty(mailTitle)) {
mailTitle = sender + "发送邮件测试";
}
message.setSubject(mailTitle);
// 设置邮件正文
if (StringUtils.isEmpty(mailTitle)) {
mailContent = sender + ":这是测试内容,请忽略此内容详情";
}
// 设置内容格式为支持html代码格式,仅测试 <br> 换行可用
message.setContent(mailContent,"text/html;charset=UTF-8");
message.setSentDate(new Date());
//保存修改内容
message.saveChanges();
return message;
}
}
版权声明:本文标题:初学者の发送QQ邮箱完整代码 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1726907182a1089888.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论