javamail 文本和多媒体混合

来源:互联网 发布:海康网络摄像机重量 编辑:程序博客网 时间:2024/06/13 04:53

在邮件内容中既包含文本内容页包含“多媒体”文件,混排的情况(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方式

原创粉丝点击