当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

Spring 发送邮件 内嵌图片增加附件

发表于: 2014-04-09   作者:cuisuqiang   来源:转载   浏览次数:
摘要: 用到的JAR包: spring.jar mail.jar activation.jar commons-logging.jar log4j-1.2.15.jar   内嵌图片,给定一个CID值即可,增加附件,使用MimeMessageHelper的addAttachment即可现在一般不会做内嵌图片,因为这样邮件会很大,容易对服务器造成压力,一般做法是使用图片链接另外,如果

用到的JAR包:

spring.jar
mail.jar
activation.jar
commons-logging.jar
log4j-1.2.15.jar

 

内嵌图片,给定一个CID值即可,增加附件,使用MimeMessageHelper的addAttachment即可
现在一般不会做内嵌图片,因为这样邮件会很大,容易对服务器造成压力,一般做法是使用图片链接
另外,如果要做内嵌或发送图片,你应该使用信用较高的邮箱帐户,否则会报错:
554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件
对于163邮箱服务器会产生的其他问题,参见:http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html

以下是示例代码:

package test;

import java.util.Properties;
import javax.mail.Session;
import javax.mail.internet.MimeMessage;
import org.springframework.core.io.ClassPathResource;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

/**
 * 这里不做异常处理
 */
public class SendMail {
	public static void main(String[] args) throws Exception{
		// 发送器
		JavaMailSenderImpl sender = new JavaMailSenderImpl();
		sender.setHost("smtp.163.com");
		sender.setPort(25); // 默认就是25
		sender.setUsername("用户@163.com"); 
		sender.setPassword("密码");
		sender.setDefaultEncoding("UTF-8");
		
		// 配置文件对象
        Properties props = new Properties();    
        props.put("mail.smtp.auth", "true"); // 是否进行验证
		Session session = Session.getInstance(props);
		sender.setSession(session); // 为发送器指定会话
		
		MimeMessage mail = sender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(mail, true);
		helper.setTo("用户@163.com"); // 发送给谁
		helper.setSubject("强哥邀请,谁敢不从!"); // 标题
		helper.setFrom("用户@163.com"); // 来自
		// 邮件内容,第二个参数指定发送的是HTML格式
		helper.setText("<font color='red'>强哥邀请你访问我的博客:http://cuisuqiang.iteye.com/!</font><br><img src='cid:myImg'>",true);
		// 增加CID内容
		ClassPathResource img = new ClassPathResource("abc.jpg");
		helper.addInline("myImg", img);
		// 增加附件
		ClassPathResource file = new ClassPathResource("abc.zip");
		helper.addAttachment("abc.zip", file);
		
		sender.send(mail); // 发送
		
		System.out.println("邮件发送成功");
	}
}

  

关于使用JavaMail发送邮件的其他示例:

JavaMail邮件发送-发送非纯文本邮件http://cuisuqiang.iteye.com/admin/blogs/1585186

JavaMail邮件发送-发送一个文本邮件和一些问题说明http://cuisuqiang.iteye.com/admin/blogs/1585167

JavaMail邮件发送-将邮件保存到本地和发送一封本地邮件http://cuisuqiang.iteye.com/admin/blogs/1586785

JavaMail邮件发送-发送带附件的邮件http://cuisuqiang.iteye.com/admin/blogs/1586023

JavaMail邮件发送-为你的邮件增加背景音乐和背景图片http://cuisuqiang.iteye.com/admin/blogs/1585856

JavaMail邮件发送-能发送附件和带背景音乐的邮件的小系统http://cuisuqiang.iteye.com/admin/blogs/1750866

JavaMail 553 You are not authorized to send mail http://cuisuqiang.iteye.com/admin/blogs/713991 

 

请您到ITEYE网站看 java小强 原创,谢谢!

http://cuisuqiang.iteye.com/ 

自建博客地址:http://www.javacui.com/ ,内容与ITEYE同步!

Spring 发送邮件 内嵌图片增加附件

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
在项目应用中,时常存在发送邮件的业务需求。比如:用户注册时的邮件确认;系统出错时的邮件提醒;用
很多企业发出的邮件都是图文并茂的,其中有部分是在邮件中引用网上的图片网址,更专业些的方法是直
这里使用的是JavaMail技术,前台使用了fckeditor做邮件美化,由于只是示例,后台发送时只是将邮件保
这里使用的是JavaMail技术,前台使用了fckeditor做邮件美化,由于只是示例,后台发送时只是将邮件保
之前已经看到,如果消息包指定了他们之间的关系,增加一个文件进去,邮箱就会显示成普通附件 但是那
之前已经看到,如果消息包指定了他们之间的关系,增加一个文件进去,邮箱就会显示成普通附件 但是那
之前已经看到,如果消息包指定了他们之间的关系,增加一个文件进去,邮箱就会显示成普通附件 但是那
之前已经看到,如果消息包指定了他们之间的关系,增加一个文件进去,邮箱就会显示成普通附件 但是那
之前已经看到,如果消息包指定了他们之间的关系,增加一个文件进去,邮箱就会显示成普通附件 但是那
这里使用的是JavaMail技术,前台使用了fckeditor做邮件美化,由于只是示例,后台发送时只是将邮件保
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号