java实现发送邮件
java发送邮件 需要先申请邮箱的授权码,对应配置文件中的password。
1.引入jar
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency>
2.实现代码:
创建Mail封装类
@Data @Builder @NoArgsConstructor @AllArgsConstructor public class Mail implements Serializable { private static final long serialVersionUID = -1L; @ApiModelProperty("发件人") private String sendFrom; @ApiModelProperty("收件人,多个以逗号隔开") private String sendTo; @ApiModelProperty("抄送人,多个以逗号隔开") private String sendCopy; @ApiModelProperty("主题") private String subject; @ApiModelProperty("邮件内容") private String content; }
创建发送邮件工具类:
public class SendEmailUtil { public static Session createSession(String host, String userName, String passWord) { Properties prop = new Properties(); prop.setProperty("mail.host", host); prop.setProperty("mail.smtp.auth", "true"); prop.setProperty("mail.smtp.ssl.enable", "true"); // 创建验证器 Authenticator auth = new Authenticator() { @Override public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(userName, passWord); } }; // 获取session对象 return Session.getInstance(prop, auth); } /** * 发送指定的邮件 * * @param mail */ public static void send(Session session, Mail mail) throws Exception { MimeMessage msg = new MimeMessage(session); // 设置发件人 msg.setFrom(new InternetAddress(mail.getSendFrom())); // 设置收件人 msg.addRecipients(Message.RecipientType.TO, mail.getSendTo()); //设置抄送 if (!ObjectUtils.isEmpty(mail.getSendCopy())) { msg.addRecipients(Message.RecipientType.CC, mail.getSendCopy()); } //设置主题 msg.setSubject(mail.getSubject()); //创建部件集对象 MimeMultipart parts = new MimeMultipart(); //创建一个部件 MimeBodyPart part = new MimeBodyPart(); //设置邮件文本内容 part.setContent(mail.getContent(), "text/html;charset=utf-8"); //把部件添加到部件集中 parts.addBodyPart(part); //给邮件设置内容 msg.setContent(parts); //发邮件 Transport.send(msg); } }
添加配置文件:
#发送邮件配置 mail.host=smtphz.qiye.163.com mail.username=***@163.com mail.password=uA*******
service中调用:
@Value("${mail.host}") private String host; @Value("${mail.username}") private String userName; @Value("${mail.password}") private String passWord; //给用户发送邮件 String subject = "后台管理平台账号已生成,请查收!"; String content = String.format("账号:%s 密码:%s", userinfo.getUsername(), pwd); Mail mail = Mail.builder().sendFrom(userName). sendTo(userinfo.getUsername()) .subject(subject) .content(content).build(); try { SendEmailUtil.send(SendEmailUtil.createSession(host, userName, passWord), mail); } catch (Exception e) { e.printStackTrace(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!