1. 程式人生 > >基於java spring的郵件群發簡單方式

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

使用環境

準備工作

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

原始碼下載

讚賞

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