基於java spring的郵件群發簡單方式
阿新 • • 發佈:2018-12-17
使用環境
準備工作
- 使用maven將spring、mybatis、mysql、java mail所需要的包匯入,具體匯入的包見demo的pom.xml
- 申請一個郵箱賬號(若有則跳過)
- 對於qq郵箱,需要申請授權碼,路徑:設定->賬戶->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務->開啟POP3/SMTP服務
- 在mysql中新建表user,並將想要傳送的郵箱引數填入,表格式如下
id name
基礎配置
spring、mybatis
詳細配置見demo
java mail
使用@PropertySource和@Value將mail.properties的內容讀取出來。
@Configuration @PropertySource("mail.properties") public class MailConfig { @Value("${mail.host}") private String mailHost; @Value
將上面讀取的內容新增到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);
傳送郵件即可。
原始碼下載
- csdn: http://download.csdn.net/detail/will4906/9880292
- github: https://github.com/will4906/MailGroup
讚賞
讚賞 | |
微信 | 支付寶 |