163邮箱发送
易邮邮件服务器 + Foxmail 实现本地邮件互通
易邮邮件服务器
百度网盘:链接:https://pan.baidu.com/s/1w08dr37Fu2TBnaOq1Xx7fw
提取码:yuge
Foxmail 自己下载
修改服务器配置
1.点击工具->服务器设置
图片设置什么的推荐使用这位大佬的:https://www.cnblogs.com/xuyou551/p/8126279.html
2.代码
依赖
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.5</version>
</dependency>
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class EmailUtil {
public static void sendVerifyEmail(String email) {
// 构造邮件内容
StringBuilder content = new StringBuilder(100)
.append("<html><head></head><body><h1>测试测试测试测试测试测试测试测试:你有毛病</h1></body></html>");
// StringBuilder content = new StringBuilder(100)
// .append("<html><head></head><body><h1>这是你的验证邮件,请点击<a href='")
// .append("http://localhost:9090/").append("checkEmailBind.do?key=")
// .append("555").append("'>").append("这里").append("</a>")
// .append("测试测试测试测试测试测试测试测试</h1></body></html>");
System.out.println(content);
try {
sendEmail(email, "绑定邮箱验证邮件", content.toString());
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
/**
* 发送邮件
*
* @param email
* @param subject
* @param content
*/
private static void sendEmail(String email, String subject, String content)
throws Exception {
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
// 设置发送邮件的SMTP服务器地址
senderImpl.setHost("localhost");
// 创建一个邮件对象
MimeMessage mailMessage = senderImpl.createMimeMessage();
// 创建邮件对象的服务类
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,"UTF-8");
messageHelper.setTo("****@****.com");// 设置发给谁 就是你在Foxmail上面新增的用户的接收地址 和下面那个写一样
messageHelper.setFrom("****@****.com");// 发件人 就是你在Foxmail上面新增的用户的接收地址
messageHelper.setSubject(subject);// 设置邮件标题
messageHelper.setText(content, true);// 设置邮件内容
senderImpl.setUsername("****@****.com"); // 根据自己的情况,设置username 易邮服务器上你自己加的用户
senderImpl.setPassword("********");// 设置密码 易邮服务器上你自己加的用户的密码
Properties prop = new Properties();
prop.put("mail.smtp.auth", "true");// 设置发送邮件需要身份认证
prop.put("mail.smtp.timeout", "25000");// 设置发送超时时间
senderImpl.setJavaMailProperties(prop);
senderImpl.send(mailMessage);
}
}
实现网易163邮箱发送邮箱
1.注册个163邮箱
2.登录163邮箱 -> 设置 -> PoP3/SMTP/IMAP -> 点击开启 IMAP/SMTP服务 -> 按照他的指示就行 然后获取 授权码 AAAAAAAAAA
3.依赖 + 代码
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.0</version>
</dependency>
import javax.mail.Message;
import javax.mail.MessagingException;
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;
/**
* 发送邮件工具类
* @author
* @date 2021
*/
public class MailUtils {
/**
* 发送邮件
* @param isSingle 是否单发: true-单发 false-群发
*/
public static void sendMail(Boolean isSingle) throws MessagingException {
Session session = authenticationMail();
MimeMessage message = getMimeMessage(isSingle, session, "asf5555544444@163.com",
"asdfsdf@163.com,asdfasdf@163.com,sdfsdfsdfsdfs@qq.com");
message = getContent(message, "标题1", "测试吧你", new Date());
Transport transport = session.getTransport();
// 这里是你的163邮箱账号和imap授权码
transport.connect("asf5555544444@163.com", "sadfsdf");
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
/**
* 校验发送的邮件内容
*/
private static MimeMessage getContent(MimeMessage message, String messageTitle, String messageContent, Date sendTime) throws MessagingException {
if (null == messageTitle) {
throw new MessagingException("邮件标题不能为空");
}
if (null == messageContent) {
throw new MessagingException("邮件内容不能为空");
}
sendTime = sendTime == null ? new Date() : sendTime;
message.setSubject(messageTitle, "UTF-8");
message.setContent(messageContent, "text/html;charset=UTF-8");
message.setSentDate(sendTime);
return message;
}
/**
* 验证认证信息
*/
private static Session authenticationMail() throws MessagingException {
Session session;
try {
Properties props = new Properties();
//设置用户的认证方式
props.setProperty("mail.smtp.auth", "true");
//设置传输协议
props.setProperty("mail.transport.protocol", "smtp");
//设置发件人的SMTP服务器地址
props.setProperty("mail.smtp.host", "smtp.163.com");
session = Session.getInstance(props);
session.setDebug(true);
} catch (Exception e) {
e.printStackTrace();
throw new MessagingException("认证失败");
}
return session;
}
/**
* @param isSingle 是否单发
* <P>true-向指定的一个收件人发送邮件,比如:找回密码、登录验证
* <P>false-向多个收件人群发邮件,比如:优惠活动推送
* <P>群发时多个收件人之间用英文逗号','分割
* @param senderAddress 发件人地址
* @param recipientAddress 收件人地址
*/
private static MimeMessage getMimeMessage(Boolean isSingle, Session session, String senderAddress, String recipientAddress) throws MessagingException {
MimeMessage message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress(senderAddress));
} catch (MessagingException e) {
throw new MessagingException("发件人地址错误");
}
/*
设置收件人地址
MimeMessage.RecipientType.TO:发送 MimeMessage.RecipientType.CC:抄送 MimeMessage.RecipientType.BCC:密送
*/
if (isSingle) {
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(recipientAddress));
} else {
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipientAddress));
}
return message;
}
}
代码建议异步跑
CompletableFuture.runAsync(() -> {
// 邮箱信息取配置表中邮箱信息
try {
// MailUtils.sendMail(true);
MailUtils.sendMail(false);
} catch (MessagingException e) {
e.printStackTrace();
}
});
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了