基于java spring的邮件群发简单方式

来源:互联网 发布:python 数据分析 知乎 编辑:程序博客网 时间:2024/06/03 23:08

使用环境

  • maven
  • spring
  • mybatis
  • mysql
  • java mail
  • qq邮箱

准备工作

  1. 使用maven将spring、mybatis、mysql、java mail所需要的包导入,具体导入的包见demo的pom.xml
  2. 申请一个邮箱账号(若有则跳过)
  3. 对于qq邮箱,需要申请授权码,路径:设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务->开启POP3/SMTP服务
  4. 在mysql中新建表user,并将想要发送的邮箱参数填入,表格式如下
id name email

基础配置

  • spring、mybatis

    详细配置见demo

  • java mail

    1. 使用@PropertySource和@Value将mail.properties的内容读取出来。

      @Configuration@PropertySource("mail.properties")public class MailConfig {@Value("${mail.host}")private String mailHost;@Value("${mail.port}")private int mailPort;@Value("${mail.username}")private String username;@Value("${mail.password}")private String password;@Value("${mail.auth}")private String auth;@Value("${mail.timeout}")private String time0ut;@Value("${mail.starttls.enable}")private String starttlsEnable;@Value("${mail.socketFactory.fallback}")private String socketFactoryFallback;@Value("${mail.socketFactory.class}")private String socketFactoryClass;......
    2. 将上面读取的内容添加到mailsender中进行配置

      @Beanpublic MailSender mailSender(Environment env){    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();    mailSender.setHost(mailHost);    mailSender.setPort(Integer.valueOf(mailPort));    mailSender.setUsername(username);    mailSender.setPassword(password);    mailSender.setDefaultEncoding("utf-8");    Properties jpro = new Properties();    jpro.setProperty("mail.smtp.auth", auth);    jpro.setProperty("mail.smtp.timeout", time0ut);    jpro.setProperty("mail.smtp.starttls.enable", starttlsEnable);    jpro.setProperty("mail.smtp.socketFactory.port", String.valueOf(mailPort));    jpro.setProperty("mail.smtp.socketFactory.fallback", socketFactoryFallback);    jpro.setProperty("mail.smtp.socketFactory.class", socketFactoryClass);    mailSender.setJavaMailProperties(jpro);    return  mailSender;}

    这样java mail的基础配置就基本完成

发送邮件

目标是发送基于html的邮件,这样我们可以定制出各种各样的新鲜样式

  • 读取html文件
    为了方便笔者直接使用了apache的commons-io读取文件内容

    String text = "";File file = ResourceUtils.getFile("classpath:mail.html");text = FileUtils.readFileToString(file, "utf-8");
  • 读取数据库用户列表

    使用mybatis读取mysql中的email列表实现群发功能,具体操作见demo

  • 创建邮件
    邮件至少由4个部分组成,分别是发送者,接受者,邮件名称,内容,可用以下参数配置

    MimeMessage message = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");helper.setFrom(mailUserName);helper.setTo(email);helper.setSubject("DEMO");helper.setText(text, true);      //true可以显示html格式的文本
  • 发送邮件
    最后使用mailSender.send(message);发送邮件即可。

源码下载

  • csdn: http://download.csdn.net/detail/will4906/9880292
  • github: https://github.com/will4906/MailGroup

赞赏

赞赏 微信支付 支付宝 微信 支付宝
原创粉丝点击