基於java spring的郵件群發簡單方式

will4906發表於2017-06-25

使用環境

準備工作

  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中進行配置

      @Bean
      public 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);傳送郵件即可。

原始碼下載

讚賞

讚賞
微信支付 支付寶
微信 支付寶

相關文章