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(); } |