Spring中已经封装了邮件操作类,通过spring配置文件可以便捷地注入到controller、action等地方。
下面是配置:
1
2
3
4
|
<!-- mail sender -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"
p:host="${mail.host}" p:port="${mail.port}"
p:username="${mail.user}" p:password="${mail.passwd}"></bean>
|
mail配置
1
2
3
4
5
6
|
Email Configuration:
mail.host=smtp.163.com
mail.port=25
mail.user=xxxxxx@163.com
mail.passwd=xxxxxxxx
mail.from=xxxxxx@163.com
|
控制器中注入mailSender:
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
|
@Controller
public class EmailController {
private MailSender mailSender;
@Value ( "${mail.from}" )
String emailFrom;
@Autowired
public void setMailSender(MailSender mailSender) {
this .mailSender = mailSender;
}
@RequestMapping (value= "/sendEmail" ,method=RequestMethod.POST)
public ModelAndView sendEmail( @ModelAttribute ( "newEmail" ) ContactEmail newEmail,
BindingResult bindResult,SessionStatus status){
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(newEmail.getTo());
message.setFrom(emailFrom);
message.setSubject(newEmail.getSubject());
message.setText(newEmail.getContent());
String result = "" ;
try {
mailSender.send(message);
result = "Email was sent!" ;
} catch (MailException e){
result = "Sending email failed!<br/><hr/>" +e.getMessage();
}
ModelAndView view = new ModelAndView( "emailResult" );
view.addObject( "result" , result);
return view;
}
}
|
mail form:
1
2
3
4
5
6
7
8
9
10
11
12
|
< form:form action = "sendEmail.do" method = "post" commandName = "newEmail" >
< div >
< p > to:< form:input path = "to" cssStyle = "width:260px;" />
< form:errors path = "to" cssStyle = "color:red;" /></ p >
< p >subject:< form:input path = "subject" cssStyle = "width:260px;" />
< form:errors path = "subject" cssStyle = "color:red;" /></ p >
< p >content:< form:textarea path = "content" rows = "5" cols = "60" ></ form:textarea >< br />
< form:errors path = "content" cssStyle = "color:red;" /></ p >
< p >< input type = "submit" value = "confirm and send" /></ p >
</ div >
</ form:form >
|
发送带附件的邮件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
try {
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
Properties props = new Properties();
props.put( "mail.smtp.auth" , "true" );
senderImpl.setHost( "smtp.163.com" );
senderImpl.setUsername( "zhangfl85" );
senderImpl.setPassword( "851010" );
senderImpl.setJavaMailProperties(props);
MimeMessage mimeMessge = senderImpl.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessge, true );
mimeMessageHelper.setTo( "zhangfl85@126.com" );
mimeMessageHelper.setFrom( "zhangfl85@163.com" );
mimeMessageHelper.setSubject( "添加附件测试" );
mimeMessageHelper.setText( "test" , true ); FileSystemResource img = new FileSystemResource( new File( "I:/liang.jpg" ));
mimeMessageHelper.addAttachment(MimeUtility.encodeWord( "3M样品仓库标准送货单模板.jpg" ),
,img);
senderImpl.send(mimeMessge);
} catch (Exception e){
e.printStackTrace();
}
|