javamail 文本和多媒体混合

原创 2013年12月04日 10:04:17

在邮件内容中既包含文本内容页包含“多媒体”文件,混排的情况(related)

 

package hb.test;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class MainBodyTest {

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

		Properties props = new Properties();
		props.setProperty("mail.smtp.auth", "true");
		props.setProperty("mail.transport.protocol", "smtp");
		
		Session session = Session.getInstance(props);
		session.setDebug(true);
		
		Message msg = new MimeMessage(session);
		msg.setText("来自hbiao68@@yeah.net 的 邮件测试");
		msg.setSubject("测试邮件");
		msg.setFrom(new InternetAddress("hbiao68@yeah.net"));
		msg.setRecipient(RecipientType.TO, new InternetAddress("939706250@qq.com") );
		
		msg.setSentDate(new Date());
		//表示邮件中的内容是“多媒体”格式——既有文本也有附件
		MimeMultipart msgMultipart = new MimeMultipart("mixed");
		msg.setContent(msgMultipart);
		
		MimeBodyPart content = new MimeBodyPart();
		msgMultipart.addBodyPart(content);
		//下面的内容是显示在“正文中的”,即文字内容中添加多媒体文件
		MimeMultipart bodyMultipart = new MimeMultipart("related");
		content.setContent(bodyMultipart);
		MimeBodyPart htmlPart = new MimeBodyPart();
		MimeBodyPart gifPart = new MimeBodyPart();
		bodyMultipart.addBodyPart(htmlPart);
		bodyMultipart.addBodyPart(gifPart);
		
		DataSource gifds = new FileDataSource("c:\\d.jpg");
		DataHandler gifdh = new DataHandler(gifds);
		gifPart.setDataHandler(gifdh);
		gifPart.setContentID("dfasdsaf");
		//说明这种多媒体的名称标记为"huangbiao.gif"
//			gifPart.setHeader("Content-Location", "http://www.itcast.cn/logo.gif");
		gifPart.setHeader("Content-Location", "huangbiao.gif");
		//引用上面添加的多媒体,即"huangbiao.gif"
//			htmlPart.setContent("图片如图<img src='http://www.itcast.cn/logo.gif'>"
//					, "text/html;charset=gbk");
		htmlPart.setContent("图片如图<img src='huangbiao.gif'>"
				, "text/html;charset=gbk");
		//发送邮件
//		Transport transport = session.getTransport();
//		transport.connect("smtp.yeah.net", 25, "用户名", "密码");
//		transport.sendMessage(msg, new Address[]{new InternetAddress("939706250@qq.com")});
//
//		transport.close();
		
		msg.saveChanges();
		//保存邮件
		OutputStream ips = new FileOutputStream("c:\\demo3.eml");
		msg.writeTo(ips);
		ips.close();
	}

}

 

备注:上面的代码可以保存邮件,然后在打开保存的邮件是显示正常的(文本内容中含有多媒体文件)

但是,如果发送邮件却会提示失败,不是因为代码写错了,而是因为我们使用的邮件系统是否支持这种related方式

在html中嵌入多媒体文件

1、嵌入pdf:(1)利用object
  • diu_brother
  • diu_brother
  • 2016年04月26日 13:13
  • 1459

JavaMail混合复杂邮件的编写

上一篇日志我与大家分享了利用JavaMail编写单纯的文字和图片邮件的过程,今天就跟大家分享一下混合并且复杂的邮件编写,准备工作和上一篇日志相同。 那么我们直接来看源码: Code ...
  • Astonish__
  • Astonish__
  • 2014年04月15日 11:00
  • 361

Android多媒体开发框架

一、Vitamio框架Vitamio 是一款 Android 与 iOS 平台上的全能多媒体开发框架,全面支持硬件解码与 GPU 渲染。Vitamio 凭借其简洁易用的 API 接口赢得了全球众多开发...
  • axi295309066
  • axi295309066
  • 2016年10月02日 16:06
  • 1972

解决java mail发送TXT附件被直接显示在正文中的问题

这两天遇到一个问题,关于使用java mail发送邮件的问题. 具体是这样子的:我使用java mail发送异常报告邮件,邮件中有一个包括异常日志的附件,和关于设备信息的邮件正文.如果日志为log后...
  • maosidiaoxian
  • maosidiaoxian
  • 2014年06月20日 13:23
  • 2610

Excel数字、文本混合列导入SQL Server出现的问题&解决办法

Excel文件: 序号 姓名 内部电话 住址 1 小李 1234 …… 2 小王 5678 ……...
  • u012887259
  • u012887259
  • 2014年10月15日 18:51
  • 1721

JavaMail接收邮件,并解析邮件(用于解决一些线上问题)

1、接收邮件解析邮件 package com.xxxx.error.process; import java.io.BufferedInputStream; import java.io.Buffe...
  • lyliyongblue
  • lyliyongblue
  • 2015年06月29日 22:49
  • 1112

Windows多媒体定时器(精确到1ms) (二)

Windows多媒体定时器(精确到1ms)
  • HK_5788
  • HK_5788
  • 2017年04月15日 21:49
  • 547

numpy关于文件中数据为混合类型的时候的读取

转载自:https://codeday.me/bug/20171015/87046.html python – 如何使用numpy.genfromtxt当第一列是字符串,其余的列是数...
  • jiujiuyibai
  • jiujiuyibai
  • 2017年11月03日 09:45
  • 93

JavaMail基本使用

JavaMail基本使用基本概述 JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于J...
  • q547550831
  • q547550831
  • 2016年10月23日 20:10
  • 1163

windows编程学习之多媒体时钟

以下是使用多媒体计数器时涉及的函数 (1)DWORD   timeGetTime(void)          返回从Windows启动开始经过的毫秒数 (2)timeSetEvent( UINT...
  • Cry_Alone
  • Cry_Alone
  • 2016年12月07日 20:47
  • 702
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javamail 文本和多媒体混合
举报原因:
原因补充:

(最多只允许输入30个字)