javamail 包含动态图片src cid:
首先配置spring的xml文件:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans> <bean id="mailsender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host"> <value>smtp.163.com</value> </property> <property name="username"> <value>youruser</value> </property> <property name="password"> <value>yourpassword</value> </property> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> </props> </property> </bean> <bean id="mailmessage" class="org.springframework.mail.SimpleMailMessage"> <property name="to"> <value>youruser@163.com</value> </property> <property name="from"> <value>youruser@163.com</value> </property> <property name="subject"> <value>A sample mail</value> </property> </bean> </beans>邮件工厂,采用工厂模式: /** *//** **/package com.kevin.springmail;import java.io.File;import java.io.IOException;import javax.mail.MessagingException;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeUtility;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.log4j.BasicConfigurator;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.core.io.FileSystemResource;import org.springframework.core.io.UrlResource;import org.springframework.mail.SimpleMailMessage;import org.springframework.mail.javamail.JavaMailSenderImpl;import org.springframework.mail.javamail.MimeMessageHelper;/** *//** * @author Administrator * @date 2006-9-15 * @time 22:16:34 */public class MailFactory ...{ private static final Log logger = LogFactory.getLog(MailFactory.class); private static final ApplicationContext context; /** *//** * 初始化beans */ static ...{ //加载log4j日志记录 BasicConfigurator.configure(); String springbean = "com/kevin/springmail/springmail.xml"; context = new ClassPathXmlApplicationContext(springbean); logger.info("初始化beans springmail.xml 完成!"); } /** *//** * 发送简单的邮件信息,邮件的内容都是纯文本的内容 * */ public static void sendSimpleMessageMail()...{ SimpleMailMessage mailmessage = (SimpleMailMessage)context.getBean("mailmessage"); JavaMailSenderImpl mailsender = (JavaMailSenderImpl)context.getBean("mailsender"); mailmessage.setText("你好,Jarry!"); mailsender.send(mailmessage); logger.info("simple mail has bean sent !"); } /** *//** * 发送HTML格式的邮件,HTML格式中带有图片的, * 图片的来源是Server端的文件系统。(图片就是文件系统的) * @throws MessagingException * @throws IOException */ public static void sendMimeMessageMail() throws MessagingException, IOException...{ JavaMailSenderImpl mailsender = (JavaMailSenderImpl)context.getBean("mailsender"); MimeMessage mimeMessage = mailsender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "GB2312"); StringBuffer html = new StringBuffer(); html.append("<html>"); html.append("<head>"); html.append("<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>"); html.append("</head>"); html.append("<body bgcolor='#ccccff'>"); html.append("<center>"); html.append("<h1>你好,Jarry</h1>"); html.append("<img src='cid:img'>"); html.append("<p>logo:"); html.append("<img src='cid:logo'>"); html.append("</center>"); html.append("</body>"); html.append("</html>"); helper.setText(html.toString(), true); FileSystemResource image = new FileSystemResource(new File("icon.gif")); helper.addInline("img",image); FileSystemResource logo = new FileSystemResource(new File("logo.gif")); helper.addInline("logo",logo); helper.setFrom("green006@163.com"); helper.setTo("green006@163.com"); helper.setSubject("spring javamail test"); logger.info(mimeMessage.getContentID()); logger.info(mimeMessage.getContent()); mailsender.send(mimeMessage); logger.info("mime mail has bean sent !"); } /** *//** * 发送带动态图象的HTML邮件,所谓动态图象就是在发送邮件时 * 动态地生成一个图片,然后再随HTML格式的邮件发送出去。 * @throws MessagingException * @throws IOException * */ public static void sendDynamicImageMail() throws MessagingException, IOException...{ JavaMailSenderImpl mailsender = (JavaMailSenderImpl)context.getBean("mailsender"); MimeMessage mimeMessage = mailsender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "GB2312"); StringBuffer html = new StringBuffer(); html.append("<html>"); html.append("<head>"); html.append("<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>"); html.append("</head>"); html.append("<body bgcolor='#ccccff'>"); html.append("<center>"); html.append("<h1>你好,Jarry</h1>"); html.append("<img src='cid:png'>");//cid:png中的png就是下面的helper.addInline("png",image);中的png html.append("</body>"); html.append("</html>"); //设定邮件的正文内容 helper.setText(html.toString(), true); //new一个UrlResource对象,注意http://localhost:8080/springtiles/makechart.png看起来好像一个png格式的 //图片,其实makechart.png本质上是一个Servlet,在这个Servlet中用JFreeChart构造了一个3D的图象。 UrlResource image = new UrlResource("http://localhost:8080/springtiles/makechart.png"); //把生成的image图象添加到邮件信息中 helper.addInline("png",image); helper.setFrom("green006@163.com"); helper.setTo("green006@163.com"); helper.setSubject("spring javamail test"); logger.info(mimeMessage.getContentID()); logger.info(mimeMessage.getContent()); mailsender.send(mimeMessage); logger.info("dynamic image mail has bean sent !"); } /** *//** *发送带附件的电子邮件,包括文件名是中文的。 *(中文比较特殊些,不然会出现乱码) * * @throws MessagingException * @throws IOException */ public static void sendMailWithAttachment() throws MessagingException, IOException...{ JavaMailSenderImpl mailsender = (JavaMailSenderImpl)context.getBean("mailsender"); MimeMessage mimeMessage = mailsender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "GB2312"); StringBuffer html = new StringBuffer(); html.append("<html>"); html.append("<head>"); html.append("<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>"); html.append("</head>"); html.append("<body bgcolor='#ccccff'>"); html.append("<center>"); html.append("<h1>你好,Jarry</h1>"); html.append("<p>logo:"); html.append("<img src='cid:logo'>"); html.append("</center>"); html.append("</body>"); html.append("</html>"); helper.setText(html.toString(), true); FileSystemResource logo = new FileSystemResource(new File("logo.gif")); helper.addInline("logo",logo); //添加附件 File file = new File("build.xml"); helper.addAttachment("build.xml",file); //添加中文名的,不做下面的处理会出现乱码的。 String filename = MimeUtility.encodeText(new String("个人助理-公元农历.mht".getBytes(),"GB2312"),"GB2312","B"); File f = new File("个人助理-公元农历.mht"); helper.addAttachment(filename,f); helper.setFrom("green006@163.com"); helper.setTo("green006@163.com"); helper.setSubject("spring javamail test"); logger.info(mimeMessage.getContentID()); logger.info(mimeMessage.getContent()); mailsender.send(mimeMessage); logger.info("a mime mail with an attachment has bean sent !"); }}生成3D图象的servlet: /** *//** **/package com.kevin.springmail;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import com.kevin.jfreechart.education.EducationAccount;/** *//** * @author Administrator * @date 2006-9-16 * @time 0:45:47 */public class ChartServlet extends HttpServlet ...{ private final Log logger = LogFactory.getLog(this.getClass()); /** *//** * */ private static final long serialVersionUID = 1L; private final String CONTENS_TYPE ="IMAGE/PNG"; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException ...{ response.setContentType(CONTENS_TYPE); //利用JFreeChart构建生成3D的图表 EducationAccount assetBar = new EducationAccount(); assetBar.drawBar3D(response.getOutputStream()); logger.info("完成在servlet中输出image!"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException ...{ // TODO Auto-generated method stub doGet(request,response); } }简单测试一下: /** *//** **/package com.kevin.springmail;import java.io.IOException;import java.net.URISyntaxException;import javax.mail.MessagingException;/** *//** * @author Administrator * @date 2006-9-15 * @time 22:36:29 */public class MailTest ...{ /** *//** * @param args * @throws MessagingException * @throws IOException * @throws URISyntaxException */ public static void main(String[] args) throws MessagingException, IOException, URISyntaxException ...{ // TODO Auto-generated method stub //MailFactory.sendSimpleMessageMail(); //MailFactory.sendMimeMessageMail(); MailFactory.sendMailWithAttachment(); }}
页:
[1]