发送邮件

本文介绍了一个基于Spring框架的邮件服务类实现,该类能够发送多种类型的邮件,包括简单文本邮件、HTML格式邮件、内嵌图片的邮件、带附件的邮件及提供替代内容的邮件,并利用Freemarker模板引擎生成邮件正文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.HashMap;
import java.util.Map;

import javax.mail.BodyPart;
import javax.mail.MessagingException;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import org.springframework.core.io.ClassPathResource;
import org.springframework.core.task.TaskExecutor;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;

import freemarker.template.Template;
public class MailService {
private JavaMailSender sender;

public void setSender(JavaMailSender sender) {
this.sender = sender;
}
public void sendSimpleMail(int userId) {
SimpleMailMessage msg = new SimpleMailMessage();
msg.setFrom("masterspring2@sina.com");
msg.setTo("masterspring2@gmail.com");
msg.setReplyTo("masterspring2@sina.com");
msg.setFrom("masterspring2@gmail.com");
msg.setTo("masterspring2@sina.com");
msg.setReplyTo("masterspring2@gmail.com");
msg.setCc("masterspring2@163.com");
msg.setSubject("注册成功");
msg.setText("恭喜,您在宝宝淘论坛已经注册成功!您的用户ID为:" + userId);
sender.send(msg);
}
public void sendHtmlMail(int userId) throws MessagingException {
MimeMessage msg = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, false, "utf-8");
helper.setFrom("masterspring2@sina.com");
helper.setTo("masterspring2@gmail.com");
helper.setSubject("注册成功");
String htmlText = "<html><head>"
+ "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">"
+ "</head><body>" + "恭喜,您在宝宝淘论坛已经注册成功!您的用户ID为:"
+ "<font size='20' size='30'>" + userId + "</font>"
+ "<body></html>";
helper.setText(htmlText, true);
sender.send(msg);
}

public void sendInlineMail() throws MessagingException {
MimeMessage msg = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, true, "utf-8");
helper.setFrom("masterspring2@sina.com");
helper.setTo("masterspring2@gmail.com");
helper.setSubject("注册成功");
String htmlText = "<html><head>"
+ "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">"
+ "</head><body>" + "欢迎访问宝宝淘论坛!</hr>"
+ "<div><img src=\"cid:img01\"></img></div>" + "<body></html>";
helper.setText(htmlText, true);
ClassPathResource img = new ClassPathResource("bbt.gif");
helper.addInline("img01", img);
sender.send(msg);
}

public void sendAttachmentMail() throws Exception {
MimeMessage msg = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, true, "utf-8");
helper.setFrom("masterspring2@sina.com");
helper.setTo("masterspring2@gmail.com");
helper.setSubject("注册成功");
helper.setText("欢迎访问宝宝淘论坛!");
ClassPathResource file1 = new ClassPathResource("bbt.zip");
helper.addAttachment("file01.zip", file1.getFile());
ClassPathResource file2 = new ClassPathResource("file.doc");
helper.addAttachment("file02.doc", file2.getFile());
sender.send(msg);
}

public void sendAlternativeMail() throws Exception {
MimeMessagePreparator mmp = new MimeMessagePreparator() {
public void prepare(MimeMessage msg) throws Exception {
MimeMessageHelper helper = new MimeMessageHelper(msg, true,
"utf-8");
helper.setFrom("masterspring2@sina.com");
helper.setTo("masterspring2@gmail.com");
helper.setSubject("注册成功");

MimeMultipart mmPart = new MimeMultipart("alternative");
msg.setContent(mmPart);

BodyPart plainTextPart = new MimeBodyPart();
plainTextPart.setText("欢迎访问宝宝淘论坛!");
mmPart.addBodyPart(plainTextPart);

BodyPart htmlPart = new MimeBodyPart();
String htmlText = "<html><head>"
+ "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">"
+ "</head><body><font size='20' size='30'>"
+ "欢迎访问宝宝淘论坛</font>" + "<body></html>";
htmlPart.setContent(htmlText, "text/html;charset=utf-8");
mmPart.addBodyPart(htmlPart);
}
};
sender.send(mmp);
}

private FreeMarkerConfigurer freeMarkerConfigurer = null;
public void setFreeMarkerConfigurer(
FreeMarkerConfigurer freeMarkerConfigurer) {
this.freeMarkerConfigurer = freeMarkerConfigurer;
}
public void sendTemplateMail(int userId) throws MessagingException {

MimeMessage msg = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, false, "utf-8");
helper.setFrom("masterspring2@sina.com");
helper.setTo("masterspring2@gmail.com");
helper.setSubject("注册成功:基于模板");
String htmlText = getMailText(userId);
helper.setText(htmlText, true);
sender.send(msg);
}
private String getMailText(int userId) {
String htmlText = null;
try {
Template tpl = freeMarkerConfigurer.getConfiguration().getTemplate(
"registerUser.ftl");
Map map = new HashMap();
map.put("userId", userId);
htmlText = FreeMarkerTemplateUtils.processTemplateIntoString(tpl,
map);
} catch (Exception e) {
throw new RuntimeException(e);
}
return htmlText;
}

private TaskExecutor taskExecutor;
public void setTaskExecutor(TaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
}
public void sendAsyncMail(final int userId) {
taskExecutor.execute(new Runnable() {
public void run() {
try {
sendTemplateMail(userId);
System.out.println("邮件发送成功!");
} catch (Exception e) {
System.out.println("邮件发送失败!,异常信息:" + e.getMessage());
}
}
});
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值