java邮件开发(8、用spring发送HTML嵌套图片并带附件)

来源:互联网 发布:海康威视网络监控延迟 编辑:程序博客网 时间:2024/06/06 11:39

这是邮件系列文章的完结篇了,最后一次我用spring发送HTML格式的邮件,邮件里嵌套图片,并带有附件功能。

程序测试过了 发给搜狐就没问题,至于其它可能它比较严格,把邮件过滤掉了,我是用自己本地的服务器。

代码如下

package org.fantlam.spring;

import java.io.File;

import javax.mail.MessagingException;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeUtility;

 

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.springframework.mail.javamail.JavaMailSender;

import org.springframework.mail.javamail.JavaMailSenderImpl;

import org.springframework.mail.javamail.MimeMessageHelper;

 

public class SpringMail2 {

public ApplicationContext ctx = null;

public SpringMail2() {

// 获取上下文

ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

}

public void send() {

// 获取JavaMailSender bean

JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");

JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();

MimeMessage mailMessage = senderImpl.createMimeMessage();

// 设置utf-8或GBK编码,否则邮件会有乱码

MimeMessageHelper messageHelper = null;

try {

messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8");

} catch (MessagingException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

try {

messageHelper.setTo("fantlam@sohu.com");// 接收者

messageHelper.setFrom("fantlam@sina.com");// 发送者

messageHelper.setSubject("用spring发送邮件");// 主题

// 邮件内容,注意加参数true(注重这里的boolean,等于真的时候才能嵌套图片,在构建MimeMessageHelper时候,所给定的值是true表示启用,multipart模式)

messageHelper.setText("<html><head></head><body><h1>用spring发送HTML并带附件的邮件</h1><br><img src='a'/></body></html>",true);// 附件内容

messageHelper.addInline("a", new File("c:/1.jpg"));

File file = new File("c:/中文名字.rar");

// 这里的方法调用和插入图片是不同的,使用MimeUtility.encodeWord()来解决附件名称的中文问题

messageHelper.addAttachment(MimeUtility.encodeWord(file.getName()),file);

sender.send(mailMessage);

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

new SpringMail2().send();

}

}

同时告诉做程序的也可以赚点外快,想我这样:http://t.cn/zOyltbx