您的位置:首页 > 编程语言 > Java开发

《pro Spring》学习笔记之使用Spring+James邮件服务器发送内嵌图片的HTML邮件

2007-09-14 16:59 831 查看
首先,请参考这一片文章,配置好James邮件服务器

http://blog.csdn.net/daryl715/archive/2007/09/14/1784869.aspx

为了发送一副内嵌图片的HTML的电子邮件,你必须先组装html消息,然后再把图片作为mime的消息额外部分添加进去,再添加一个 mime部分时,你可以先给他关联一个Content-id,一个Content-id是来在html里引用图片的,在使用MimeMessageHelper时候,spring帮你处理了这个过程后的很逻辑

抽象类:




package ch15.SimplePicMail;




import org.springframework.mail.javamail.JavaMailSenderImpl;






public abstract class AbstractMessageSender ...{


protected String to;


protected String from;


protected String subject;


protected String text;


protected JavaMailSenderImpl sender;




public String getTo() ...{


return to;


}




public void setTo(String to) ...{


this.to = to;


}




public String getFrom() ...{


return from;


}




public void setFrom(String from) ...{


this.from = from;


}




public String getSubject() ...{


return subject;


}




public void setSubject(String subject) ...{


this.subject = subject;


}




public String getText() ...{


return text;


}




public void setText(String text) ...{


this.text = text;


}




public JavaMailSenderImpl getSender() ...{


return sender;


}




public void setSender(JavaMailSenderImpl sender) ...{


this.sender = sender;


}





}





实现类:




package ch15.SimplePicMail;




import javax.mail.MessagingException;


import javax.mail.internet.MimeMessage;




import org.springframework.core.io.FileSystemResource;


import org.springframework.mail.javamail.MimeMessageHelper;






public class SimplePICMessageSender extends AbstractMessageSender ...{


private MimeMessageHelper helper;


private MimeMessage msg;


private FileSystemResource img;







public FileSystemResource getImg() ...{


return img;


}






public void setImg(FileSystemResource img) ...{


this.img = img;


}






public void sendMessage()...{


msg=sender.createMimeMessage();







try ...{


helper=new MimeMessageHelper(msg,true); //使用内嵌资源时,需要额外配置一个true参数


helper.setTo(to);


helper.setFrom(from);


helper.setSubject(subject);


helper.setText(text,true);//true表示text/html格式邮件


helper.addInline("abc", img); //加入一个名为abc的内嵌资源


System.out.println(img);




}catch (MessagingException e) ...{


System.out.println(e.getMessage());


}





sender.send(msg);


}





}





配置文件:




<?xml version="1.0" encoding="UTF-8"?>


<beans


xmlns="http://www.springframework.org/schema/beans"


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"


xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<bean id="sender" class="org.springframework.mail.javamail.JavaMailSenderImpl">


<property name="host">


<value>king.cn</value>


</property>


<property name="username">


<value>gaoxiang</value>


</property>


<property name="password">


<value>gaoxiang</value>


</property>


<property name="javaMailProperties">


<props>


<prop key="mail.smtp.auth">true</prop>


<prop key="mail.smtp.timeout">10000</prop>


</props>


</property>


</bean>




<bean id="messageSender" class="ch15.SimplePicMail.SimplePICMessageSender">


<property name="sender">


<ref bean="sender"/>


</property>


<property name="to">


<value>daryl715@tom.com</value>


</property>


<property name="from">


<value>gaoxiang@king.cn</value>


</property>


<property name="subject">


<value>html mime mail</value>


</property>


<!-- 此处用cid:abc 表示实用的一个内嵌资源,名称为abc -->


<property name="text">


<value><![CDATA[<html><head><body>this is a pic mail<img src="cid:abc"></body></head></html>]]></value>


</property>


<property name="img">


<bean class="org.springframework.core.io.FileSystemResource">


<constructor-arg>


<bean class="java.io.File">


<constructor-arg>


<value>./src/ch15/SimplePicMail/mail.jpg</value>


</constructor-arg>


</bean>


</constructor-arg>


</bean>


</property>


</bean>






</beans>



测试代码:




package ch15.SimplePicMail;




import java.io.File;




import org.springframework.context.ApplicationContext;


import org.springframework.context.support.ClassPathXmlApplicationContext;






public class SimplePICTest ...{








public static void main(String[] args) throws Exception ...{


ApplicationContext context=new ClassPathXmlApplicationContext("ch15/SimplePicMail/applicationContext.xml");


SimplePICMessageSender mailSender=(SimplePICMessageSender)context.getBean("messageSender");










for (int i = 0; i < 10; i++) ...{


mailSender.sendMessage();


System.out.println("成功");


Thread.sleep(2000); //发送后延时2秒钟


}

















}


























}





总体来说,最好避免使用内嵌图片,而使用url来访问图片,许多电子邮件客户端对内嵌图片支持有一定的问题,尤其是当他们组成像“复杂mime”时
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: