Java的Spring框架中实现发送邮件功能的核心代码示例
内容摘要
Spring中已经封装了邮件操作类,通过spring配置文件可以便捷地注入到controller、action等地方。
下面是配置:
<!-- mail sender -->
<bean id="mailSender" class="org.
下面是配置:
<!-- mail sender -->
<bean id="mailSender" class="org.
文章正文
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(); } |
代码注释