此篇主要講的是使用spring配置實現郵件發送,與之前的底層實現簡便了不少,只需要幾個配置就可以了,那么請往下看:
先寫個接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
/** * @Title: IMailserdService.java * @Package org.service * @Description: TODO該方法的主要作用: * @author A18ccms A18ccms_gmail_com * @date 2017-5-30 上午10:36:34 * @version V1.0 */ package org.service; /** * * 項目名稱:spring_Schop8 * 類名稱:IMailserdService * 類描述: * 創建人:Mu Xiongxiong * 修改備注: * @version * */ public interface IMailsendService { /** * * @Title: sendMessage * @Description: 該方法的主要作用:發送郵件 * @param 設定文件 * @return 返回類型:void * @throws */ void sendMessage(); } |
然后在寫個實現該接口的類:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
/** * @Title: AttMailsendServiceImpl.java * @Package org.service.impl * @Description: TODO該方法的主要作用: * @author A18ccms A18ccms_gmail_com * @date 2017-5-30 上午11:12:02 * @version V1.0 */ package org.service.impl; import java.io.IOException; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.service.IMailsendService; import org.springframework.core.io.ClassPathResource; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; /** * * 項目名稱:spring_Schop8 * 類名稱:AttMailsendServiceImpl * 類描述: 使用spring實現對郵件的發送 * 創建人:Mu Xiongxiong * 修改備注: * @version * */ public class AttMailsendServiceImpl implements IMailsendService { private JavaMailSender javaMailSender; /**(非 Javadoc) * <p>Title: sendMessage</p> * <p>Description(描述):發送帶附件的郵件 </p> * @see org.service.IMailsendService#sendMessage() */ @Override public void sendMessage() { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper; try { helper = new MimeMessageHelper(message, true , "utf-8" ); helper.setSubject( "帶附件的郵件" ); //普通格式的 //helper.setText("發送一個附件內容!<a href='http://www.baidu.com'>百度搜索</a>"); //html格式的 helper.setText( "發送一個附件內容!<a href='http://www.baidu.com'>百度搜索</a>" , true ); //添加附件1 ClassPathResource file1 = new ClassPathResource( "/org/doc/doc.txt" ); helper.addAttachment(file1.getFilename(),file1.getFile()); //添加附件2 ClassPathResource file2 = new ClassPathResource( "/org/doc/text.txt" ); helper.addAttachment(file2.getFilename(), file2.getFile()); javaMailSender.send(message); } catch (MessagingException e) { // TODO 異常執行塊! e.printStackTrace(); } catch (IOException e) { // TODO 異常執行塊! e.printStackTrace(); } } public JavaMailSender getJavaMailSender() { return javaMailSender; } public void setJavaMailSender(JavaMailSender javaMailSender) { this .javaMailSender = javaMailSender; } } |
上面的這個類還可以發送帶附件的郵件,里面含兩個附件(文件),我弄上來吧:
還有一種是使用模板發送帶html格式的郵件:
我直接上實現類:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
/** * @Title: CreateMatterServiceImpl.java * @Package org.service.impl * @Description: TODO該方法的主要作用: * @author A18ccms A18ccms_gmail_com * @date 2017-5-30 上午11:46:53 * @version V1.0 */ package org.service.impl; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.service.IMailsendService; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.ui.freemarker.FreeMarkerTemplateUtils; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; /** * * 項目名稱:spring_Schop8 * 類名稱:CreateMatterServiceImpl * 類描述: * 創建人:Mu Xiongxiong * 修改備注: * @version * */ public class CreateMatterServiceImpl implements IMailsendService { private JavaMailSender javaMailSender; private Configuration configuration; /**(非 Javadoc) * <p>Title: sendMessage</p> * <p>Description(描述):使用后模板發送郵件 </p> * @see org.service.IMailsendService#sendMessage() */ @Override public void sendMessage() { MimeMessage message = javaMailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(message, true , "UTF-8" ); helper.setSubject( "使用模板進行發送郵件" ); helper.setText(getText(), true ); //從模板里面讀取 javaMailSender.send(message); } catch (MessagingException e) { // TODO 異常執行塊! e.printStackTrace(); } } //讀取模板 private String getText(){ String txt = "" ; try { Template template = configuration.getTemplate( "mail.ftl" ); //通過map傳遞動態數據 Map map = new HashMap(); map.put( "username" , "雄雄" ); //解析模板文件 txt = FreeMarkerTemplateUtils.processTemplateIntoString(template,map); } catch (IOException e) { // TODO 異常執行塊! e.printStackTrace(); } catch (TemplateException e) { // TODO 異常執行塊! e.printStackTrace(); } return txt; } public JavaMailSender getJavaMailSender() { return javaMailSender; } public void setJavaMailSender(JavaMailSender javaMailSender) { this .javaMailSender = javaMailSender; } public Configuration getConfiguration() { return configuration; } public void setConfiguration(Configuration configuration) { this .configuration = configuration; } } |
模板文件如下:
然后在看看spring里面是怎么配置的呢?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
<? xml version = "1.0" encoding = "UTF-8" ?> < beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:p = "http://www.springframework.org/schema/p" xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd" > < bean id = "mailsender" class = "org.springframework.mail.javamail.JavaMailSenderImpl" > < property name = "host" value = "mail.com" ></ property > < property name = "port" value = "25" ></ property > < property name = "username" value = "jerry" ></ property > < property name = "password" value = "123" ></ property > < property name = "protocol" value = "smtp" ></ property > < property name = "defaultEncoding" value = "utf-8" ></ property > < property name = "javaMailProperties" > < props > < prop key = "mail.smtp.auth" >true</ prop > </ props > </ property > </ bean > <!-- 配置FreeMarker--> < bean id = "freeMarkerConfiguration" class = "org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean" > <!-- 指定模板文件路徑 --> < property name = "templateLoaderPath" value = "org/doc/" ></ property > <!-- 設置freekMarker環境變量 --> < property name = "freemarkerSettings" > < props > < prop key = "default_encoding" >UTF-8</ prop > </ props > </ property > </ bean > <!-- 簡單郵件 --> < bean id = "simpleMailsendService" class = "org.service.impl.SimpleMailsendServiceImpl" > < property name = "sender" ref = "mailsender" ></ property > </ bean > <!-- html和帶附件的郵件 --> < bean id = "AttMailsendService" class = "org.service.impl.AttMailsendServiceImpl" > < property name = "javaMailSender" ref = "mailsender" ></ property > </ bean > <!-- 使用模板發送郵件--> < bean id = "createMatterService" class = "org.service.impl.CreateMatterServiceImpl" > < property name = "configuration" ref = "freeMarkerConfiguration" ></ property > < property name = "javaMailSender" ref = "mailsender" ></ property > </ bean > </ beans > |
當前時間已經是00點多了,又累又困,我就不詳細解釋這個applicationContexct.xml里面的內容了,里面有注釋,看不懂的可以評論,我第一時間改進!
接著我們測試一下:
TestMail:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package org.test; import org.junit.Test; import org.service.IMailsendService; import org.service.impl.Mail; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestMail { @Test public void testMail() { ApplicationContext ctx = new ClassPathXmlApplicationContext( "applicationContext.xml" ); //簡單郵件 //IMailsendService mailsendService=(IMailsendService) ctx.getBean("simpleMailsendService"); //復雜郵件 //IMailsendService mailsendService=(IMailsendService) ctx.getBean("AttMailsendService"); //使用模板的文件 IMailsendService mailsendService=(IMailsendService) ctx.getBean( "createMatterService" ); mailsendService.sendMessage(); System.out.println( "發送成功!" ); } } |
注明一下:簡單郵件是直接發的文本內容,復雜郵件是包含html格式和附件的,模板發送是html格式的另一種方式,我們來看看運行的結果:
先看看帶附件,還有html格式的郵件:
接下來是簡單郵件:
接下來的一種是使用模板發送郵件,用戶名是動態上去的:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://blog.csdn.net/qq_34137397/article/details/72814549