通过SpringMail API发送邮件
2015-11-10 14:32
501 查看
通过SpringMail API发送邮件
使用JavaMail API也可以简单的实现发送邮件,当然通过SpringMail来发送也是很简单的。SpringMail提供了几个API用户发送不同形式的邮件:
- JavaMailSenderImpl:邮件发送器的封装,实现发送者的配置。
- SimpleMailMessage:对邮件的简单封装,只能发送一个纯文本邮件。
- MimeMailMessage:对MIME信件的封装,可以发送html格式的邮件。
- MimeMessageHelper:对MimeMailMessage封装并进行一些处理。
1.maven添加依赖
因为SpringFramework里面已经封装了SpringMail API,所以只要导入javax.mail就行了。<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.1</version> </dependency>
2.封装一个对象来保存发送者信息
@Entity @Table(name = "MAIL_SENDER_INFO") public class MailSenderInfo{ // 用户名 private String username; // 密码 private String password; // 主机 private String host; // 发送者 private String from; // 抄送 private String cc; // 密送 private String bcc; // getter and setter ... }
3.发送简单的文本邮件
import java.util.Properties; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; public class SimpleMailSender { public void sendEmail((MailSenderInfo mailSenderInfo, String to, String subject, String content) { JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); senderImpl.setHost(mailSenderInfo.getHost()); SimpleMailMessage mailMessage = new SimpleMailMessage(); mailMessage.setTo(to); mailMessage.setFrom(mailSenderInfo.getFrom()); mailMessage.setSubject(subject); mailMessage.setText(content); senderImpl.setUsername(mailSenderInfo.getUsername()); senderImpl.setPassword(mailSenderInfo.getPassword(); Properties prop = new Properties(); prop.put(" mail.smtp.auth ", " true "); senderImpl.setJavaMailProperties(prop); senderImpl.send(mailMessage); } }
4.发送简单的html格式邮件
public class SimpleMailSender { public void sendEmail((MailSenderInfo mailSenderInfo, String to, String subject, String content) { JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); // set mail server senderImpl.setHost(mailSenderInfo.getHost()); // sreate mail message MimeMessage mailMessage = senderImpl.createMimeMessage(); // multipart mode, able to send html message MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8"); // set sender info messageHelper.setFrom(mailSenderInfo.getFrom()); if (mailSenderInfo.getCc() != null) { messageHelper.setCc(mailSenderInfo.getCc()); } if (mailSenderInfo.getBcc() != null) { messageHelper.setCc(mailSenderInfo.getBcc()); } messageHelper.setTo(to); messageHelper.setSubject(subject); // true to set html enabled messageHelper.setText("<html><head></head><body><h1>"+ content +"</h1></body></html>", true); senderImpl.setUsername(mailSenderInfo.getUsername()); senderImpl.setPassword(mailSenderInfo.getPassword()); Properties prop = new Properties(); prop.put("mail.smtp.auth", "true"); // mail server auth username // password senderImpl.setJavaMailProperties(prop); // send email senderImpl.send(mailMessage); } }
5.发送嵌套图片的邮件
public class SimpleMailSender { public void sendEmail((MailSenderInfo mailSenderInfo, String to, String subject, String content, String imagePath) { JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); // set mail server senderImpl.setHost(mailSenderInfo.getHost()); // sreate mail message MimeMessage mailMessage = senderImpl.createMimeMessage(); // multipart mode, able to send html message MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8"); // set sender info messageHelper.setFrom(mailSenderInfo.getFrom()); if (mailSenderInfo.getCc() != null) { messageHelper.setCc(mailSenderInfo.getCc()); } if (mailSenderInfo.getBcc() != null) { messageHelper.setCc(mailSenderInfo.getBcc()); } messageHelper.setTo(to); messageHelper.setSubject(subject); // true to set html enabled messageHelper.setText("<html><head></head><body><h1>"+ content +"</h1><img src=\"cid:image\"/></body></html>", true); FileSystemResource img = new FileSystemResource(new File(imagePath)); messageHelper.addInline("image", img); senderImpl.setUsername(mailSenderInfo.getUsername()); senderImpl.setPassword(mailSenderInfo.getPassword()); Properties prop = new Properties(); prop.put("mail.smtp.auth", "true"); // mail server auth username // password senderImpl.setJavaMailProperties(prop); // send email senderImpl.send(mailMessage); } }
6.发送包含附件的邮件
public class SimpleMailSender { public void sendEmail((MailSenderInfo mailSenderInfo, String to, String subject, String content, String filePath) { JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); // set mail server senderImpl.setHost(mailSenderInfo.getHost()); // sreate mail message MimeMessage mailMessage = senderImpl.createMimeMessage(); // multipart mode, able to send html message MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8"); // set sender info messageHelper.setFrom(mailSenderInfo.getFrom()); if (mailSenderInfo.getCc() != null) { messageHelper.setCc(mailSenderInfo.getCc()); } if (mailSenderInfo.getBcc() != null) { messageHelper.setCc(mailSenderInfo.getBcc()); } messageHelper.setTo(to); messageHelper.setSubject(subject); // true to set html enabled messageHelper.setText("<html><head></head><body><h1>"+ content +"</h1></body></html>", true); FileSystemResource img = new FileSystemResource(new File(filePath)); messageHelper.addAttachment("attachment.txt", file); senderImpl.setUsername(mailSenderInfo.getUsername()); senderImpl.setPassword(mailSenderInfo.getPassword()); Properties prop = new Properties(); prop.put("mail.smtp.auth", "true"); // mail server auth username // password senderImpl.setJavaMailProperties(prop); // send email senderImpl.send(mailMessage); } }
相关文章推荐
- 基于JavaMail API收发邮件的方法
- 基于JavaMail的常用类详细介绍
- JavaMail实现发送超文本(html)格式邮件的方法
- java中javamail发送带附件的邮件实现方法
- JavaMail发送google email
- JavaMail:带附件的邮件格式解析
- javamail发送邮件
- JavaMail,自己给自己看得备忘录
- JavaMail 异步发送 自己给自己看得备忘录
- 通过 EWS JAVA API读取exchange邮件
- Java日记(1) 一. 认识Java
- 如何学习java
- 在linux下运行javaMail程序报No X11 DISPLAY variable was set……(解决方法)
- JavaMail介绍和常用的API 一个较完整的发送电子邮件函数
- 如何迅速成为Java高手zz wtwt001
- 深入JavaWeb开发技术内幕讲座
- J2EE到底是什么?
- javamail邮件发送问题
- Spring 2.5 rc1与2.0的差别
- JSP发送EMAIL