spring3框架提供了非常有用的邮件功能,org.springframework.mail
提供了对邮件的发送的jar包,最好还是自己去看一下里面的函数。spring framework提供了简单和带附件的邮件发送功能。
假设这是个业务逻辑层代码,假设我们需要给客户发送关于订单信息的邮件
publicinterface OrderManager { void placeOrder(Order order); }
简单邮件发送功能
import org.springframework.mail.MailException; import org.springframework.mail.MailSender; import org.springframework.mail.SimpleMailMessage; publicclass SimpleOrderManager implements OrderManager {
private MailSender mailSender;//spring 提供的一个已经封装好的库,具体的实现可以参考API
private SimpleMailMessage templateMessage; public void setMailSender(MailSender mailSender) { this.mailSender = mailSender; } public void setTemplateMessage(SimpleMailMessage templateMessage) { this.templateMessage = templateMessage; } public void placeOrder(Order order) { // Do the business calculations... // Call the collaborators to persist the order... // Create a thread safe "copy" of the template message and customize it SimpleMailMessage msg = new SimpleMailMessage( this.templateMessage); msg.setTo(order.getCustomer().getEmailAddress()); msg.setText( "Dear " + order.getCustomer().getFirstName() + order.getCustomer().getLastName() + ", thank you for placing order. Your order number is " + order.getOrderNumber()); try{ this.mailSender.send(msg); } catch(MailException ex) { // simply log it and go on... System.err.println(ex.getMessage()); } }}
xml的配置文件,当然你也可以使用注解
<beanid="mailSender"class="org.springframework.mail.javamail.JavaMailSenderImpl">
<propertyname="host"value="mail.mycompany.com"/>//邮箱的服务主机
<property name="port" value="25"/>
<property name="port" value="25" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.timeout">25000</prop>
</props>
</property>
<property name="username" value="**********" />//用户名
<property name="password" value="*******"></property>//密码
< /bean> < !-- this is a template message that we can pre-load with default state --> < bean id= "templateMessage" class= "org.springframework.mail.SimpleMailMessage"> < property name= "from" v alue= "customerservice@mycompany.com"/>//发送者的邮箱地址 < property name= "subject" value= "Your order"/> < /bean> < bean id= "orderManager" class= "com.mycompany.businessapp.support.SimpleOrderManager"> < property name= "mailSender" ref= "mailSender"/> < property name= "templateMessage" ref= "templateMessage"/> < /bean>发送附件和内嵌的htm啊
JavaMail and MimeMessageHelper
1 附件的发送
JavaMailSenderImpl sender = new JavaMailSenderImpl(); MimeMessage message = sender.createMimeMessage(); // use the true flag to indicate you need a multipart message MimeMessageHelper helper = new MimeMessageHelper(message, true);//true 表示你发送的是带有附件的邮件 helper.setTo("test@host.com"); helper.setText("Check out this p_w_picpath!"); // let's attach the infamous windows Sample file (this time copied to c:/)
FileSystemResource file = new FileSystemResource(new File("c:/Sample.jpg"));
//spring 2.5的版本需要
//FileSystemResource file = new FileSystemResource(new File("file:c:/Sample.jpg"));
helper.addAttachment( "CoolImage.jpg", file);// helper.addAttachment(MimeUtility.encodeWord("个人申请表.pdf"),new FileSystemResource(new File(pdfP//ath)));
sender.send(message);2 发送带有html的邮件
JavaMailSenderImpl sender = new JavaMailSenderImpl(); sender.setHost("mail.host.com"); MimeMessage message = sender.createMimeMessage(); // use the true flag to indicate you need a multipart message MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setTo("test@host.com"); // use the true flag to indicate the text included is HTML helper.setText("<html><body><img src='cid:identifier1234'></body></html>", true); // let's include the infamous windows Sample file (this time copied to c:/) FileSystemResource res = new FileSystemResource(new File("c:/Sample.jpg")); helper.addInline("identifier1234", res); sender.send(message);
转载于:https://blog.51cto.com/4747857/1372261