有時候當我們注冊完的時候系統會提示有一封郵件發送到了你的郵箱,如何做呢?
就要用到spring+velocity+javamail這3個玩意,其實只用了spring,因為其他2個都被spring集成了。
先看代碼
下面的是spring配置
mail.vm內容如下:
mail.properties如下:
就要用到spring+velocity+javamail這3個玩意,其實只用了spring,因為其他2個都被spring集成了。
先看代碼
1
package com.worthtech.app.util;
2
3
import java.io.File;
4
import java.util.Map;
5
6
import javax.mail.MessagingException;
7
import javax.mail.internet.MimeMessage;
8
9
import org.apache.velocity.app.VelocityEngine;
10
import org.springframework.core.io.FileSystemResource;
11
import org.springframework.mail.SimpleMailMessage;
12
import org.springframework.mail.javamail.JavaMailSender;
13
import org.springframework.mail.javamail.MimeMessageHelper;
14
import org.springframework.ui.velocity.VelocityEngineUtils;
15
16
public class MailSenderService {
17
private JavaMailSender mailSender;//spring配置中定義
18
private VelocityEngine velocityEngine;//spring配置中定義
19
private SimpleMailMessage simpleMailMessage;//spring配置中定義
20
private String from;
21
private String to;
22
private String subject;
23
private String content;
24
private String templateName;
25
// 是否需要身份驗證
26
private boolean validate = false;
27
28
29
public JavaMailSender getMailSender() {
30
return mailSender;
31
}
32
public void setMailSender(JavaMailSender mailSender) {
33
this.mailSender = mailSender;
34
}
35
public VelocityEngine getVelocityEngine() {
36
return velocityEngine;
37
}
38
public void setVelocityEngine(VelocityEngine velocityEngine) {
39
this.velocityEngine = velocityEngine;
40
}
41
/**
42
* 發送模板郵件
43
*
44
*/
45
public void sendWithTemplate(Map model){
46
mailSender = this.getMailSender();
47
simpleMailMessage.setTo(this.getTo()); //接收人
48
simpleMailMessage.setFrom(simpleMailMessage.getFrom()); //發送人,從配置文件中取得
49
simpleMailMessage.setSubject(this.getSubject());
50
String result = null;
51
try {
52
result = VelocityEngineUtils.mergeTemplateIntoString(this.getVelocityEngine(), this.getTemplateName(), "UTF-8",model);
53
} catch (Exception e) {}
54
simpleMailMessage.setText(result);
55
mailSender.send(simpleMailMessage);
56
}
57
/**
58
* 發送普通文本郵件
59
*
60
*/
61
public void sendText(){
62
mailSender = this.getMailSender();
63
simpleMailMessage.setTo(this.getTo()); //接收人
64
simpleMailMessage.setFrom(simpleMailMessage.getFrom()); //發送人,從配置文件中取得
65
simpleMailMessage.setSubject(this.getSubject());
66
simpleMailMessage.setText(this.getContent());
67
mailSender.send(simpleMailMessage);
68
}
69
/**
70
* 發送普通Html郵件
71
*
72
*/
73
public void sendHtml(){
74
mailSender = this.getMailSender();
75
MimeMessage mimeMessage = mailSender.createMimeMessage();
76
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);
77
try {
78
messageHelper.setTo(this.getTo());
79
messageHelper.setFrom(simpleMailMessage.getFrom());
80
messageHelper.setSubject(this.getSubject());
81
messageHelper.setText(this.getContent(),true);
82
} catch (MessagingException e) {
83
// TODO Auto-generated catch block
84
e.printStackTrace();
85
}
86
mailSender.send(mimeMessage);
87
}
88
/**
89
* 發送普通帶一張圖片的Html郵件
90
*
91
*/
92
public void sendHtmlWithImage(String imagePath){
93
mailSender = this.getMailSender();
94
MimeMessage mimeMessage = mailSender.createMimeMessage();
95
try {
96
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true);
97
messageHelper.setTo(this.getTo());
98
messageHelper.setFrom(simpleMailMessage.getFrom());
99
messageHelper.setSubject(this.getSubject());
100
messageHelper.setText(this.getContent(),true);
101
// Content="<html><head></head><body><img src=\"cid:image\"/></body></html>";
102
//圖片必須這樣子:<img src='cid:image'/>
103
FileSystemResource img = new FileSystemResource(new File(imagePath));
104
messageHelper.addInline("image",img);
105
} catch (MessagingException e) {
106
// TODO Auto-generated catch block
107
e.printStackTrace();
108
}
109
mailSender.send(mimeMessage);
110
}
111
/**
112
* 發送普通帶附件的Html郵件
113
*
114
*/
115
public void sendHtmlWithAttachment(String filePath){
116
mailSender = this.getMailSender();
117
MimeMessage mimeMessage = mailSender.createMimeMessage();
118
try {
119
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true);
120
messageHelper.setTo(this.getTo());
121
messageHelper.setFrom(simpleMailMessage.getFrom());
122
messageHelper.setSubject(this.getSubject());
123
messageHelper.setText(this.getContent(),true);
124
FileSystemResource file = new FileSystemResource(new File(filePath));
125
// System.out.println("file.getFilename==="+file.getFilename());
126
messageHelper.addAttachment(file.getFilename(),file);
127
} catch (MessagingException e) {
128
// TODO Auto-generated catch block
129
e.printStackTrace();
130
}
131
mailSender.send(mimeMessage);
132
}
133
public String getFrom() {
134
return from;
135
}
136
public void setFrom(String from) {
137
this.from = from;
138
}
139
public String getSubject() {
140
return subject;
141
}
142
public void setSubject(String subject) {
143
this.subject = subject;
144
}
145
public String getTo() {
146
return to;
147
}
148
public void setTo(String to) {
149
this.to = to;
150
}
151
public String getTemplateName() {
152
return templateName;
153
}
154
public void setTemplateName(String templateName) {
155
this.templateName = templateName;
156
}
157
public String getContent() {
158
return content;
159
}
160
public void setContent(String content) {
161
this.content = content;
162
}
163
public boolean isValidate() {
164
return validate;
165
}
166
public void setValidate(boolean validate) {
167
this.validate = validate;
168
}
169
public SimpleMailMessage getSimpleMailMessage() {
170
return simpleMailMessage;
171
}
172
public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {
173
this.simpleMailMessage = simpleMailMessage;
174
}
175
}
上面這個類實際上是個發送郵件的工具類,我們只要設置好參數后調用想要的sendXXX()就可以了。如下:
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

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

1
//注冊完馬上發送郵件
2
MailSenderService mailSender=this.getMailsenderService();
3
mailSender.setTo(form.getEmail());
4
mailSender.setSubject("來自worthtech的郵件");
5
mailSender.setTemplateName("mail.vm");//設置的郵件模板
6
Map model=new HashMap();
7
model.put("username", form.getUserName());
8
String url=request.getRequestURL().toString();
9
url=url.substring(0, url.lastIndexOf("/"));
10
model.put("url", url);
11
model.put("email", "gjni@worthtech.net");
12
mailSender.sendWithTemplate(model);
13
System.out.println("郵件發送成功!");

2

3

4

5

6

7

8

9

10

11

12

13

下面的是spring配置
1
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
2
<property name="host" value="${mail.host}"/>
3
<property name="username" value="${mail.username}"/>
4
<property name="password" value="${mail.password}"/>
5
<property name="defaultEncoding" value="UTF-8"></property>
6
<property name="javaMailProperties">
7
<props>
8
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
9
<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
10
<!--
11
<prop key="mail.smtp.starttls.enable">true</prop>
12
<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
13
<prop key="mail.smtp.socketFactory.fallback">false</prop>
14
-->
15
</props>
16
</property>
17
</bean>
18
<bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage" singleton="false">
19
<property name="from">
20
<value>${mail.default.from}</value>
21
</property>
22
</bean>
23
<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
24
<property name="velocityProperties">
25
<props>
26
<prop key="resource.loader">class</prop>
27
<prop key="class.resource.loader.class">
28
org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
29
</prop>
30
<prop key="velocimacro.library"></prop>
31
</props>
32
</property>
33
</bean>
34
<bean id="mailsenderService" class="com.worthtech.app.util.MailSenderService">
35
<property name="mailSender" ref="mailSender" />
36
<property name="simpleMailMessage" ref="simpleMailMessage" />
37
<property name="velocityEngine" ref="velocityEngine" />
38
</bean>

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

mail.vm內容如下:
1
親愛的${username}
2
3
歡迎加入worthtech!
4
5
當您收到這封信的時候,您已經可以正常登錄了。
6
請點擊鏈接登錄首頁:${url}
7
如果您的email程序不支持鏈接點擊,請將上面的地址拷貝至您的瀏覽器(如IE)的地址欄進入。
8
9
如果您還想申請管理員權限,可以聯系管理員${email}
10
11
我們對您產生的不便,深表歉意。
12
13
希望您在worthtech度過快樂的時光!
14
15
-----------------------
16
17
(這是一封自動產生的email,請勿回復。)

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

mail.properties如下:
1
mail.host=218.000.000.234
2
mail.port=25
3
mail.username=gjni@worthtech.net
4
mail.password=xxxxxxxx
5
mail.smtp.auth=true
6
mail.smtp.timeout=25000
7
mail.default.from=gjni@worthtech.net

2

3

4

5

6

7
