JavaMail邮件发送-替你的邮件增加背景音乐和背景图片
JavaMail邮件发送-为你的邮件增加背景音乐和背景图片? package com.mailimport java.util.Dateimport ja
JavaMail邮件发送-为你的邮件增加背景音乐和背景图片
?
package com.mail;import java.util.Date;import java.util.Properties;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.Multipart;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import javax.mail.internet.MimeUtility;public class HtmlMail {public static void main(String[] args) throws Exception {Properties props = new Properties();props.put( "mail.smtp.host ", "smtp.163.com ");props.put("mail.smtp.auth", "true");Session session = Session.getInstance(props);Message message = new MimeMessage(session);InternetAddress from = new InternetAddress("test20120711120200@163.com");from.setPersonal(MimeUtility.encodeText("风中落叶<test20120711120200@163.com>"));message.setFrom(from);InternetAddress to = new InternetAddress("test20120711120200@163.com");message.setRecipient(Message.RecipientType.TO, to);message.setSubject(MimeUtility.encodeText("强哥邀请,谁敢不从!"));message.setSentDate(new Date());// 构建邮件内容对象Multipart mm = new MimeMultipart();// 构建一个消息内容块BodyPart mbpFile = new MimeBodyPart();mbpFile.setContent("<body background='http://dl.iteye.com/upload/picture/pic/110267/e244bda9-9034-36e3-87fd-807629b84222.jpg'>" +"<font color='red'>强哥邀请你访问我的博客:http://cuisuqiang.iteye.com/!</font></body>","text/html;charset=UTF-8");mm.addBodyPart(mbpFile);message.setContent(mm);message.saveChanges();Transport transport = session.getTransport("smtp");transport.connect("smtp.163.com", 25, "test20120711120200", "test123456");transport.sendMessage(message, message.getAllRecipients());transport.close();System.out.println("发送完毕");}}?
想想也是,你的图片肯定是要放到一个服务器的,不然每次发送一个大包给人家,谁不烦
?
当然我还是说一下怎么增加图片直接放到消息包内
先贴代码后解释:
?
package com.mail;import java.util.Date;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.Message;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import javax.mail.internet.MimeUtility;public class Html_BjPic {public static void main(String[] args) throws Exception {Properties props = new Properties();props.put( "mail.smtp.host ", "smtp.163.com ");props.put("mail.smtp.auth", "true");Session session = Session.getInstance(props);Message message = new MimeMessage(session);InternetAddress from = new InternetAddress("test20120711120200@163.com");from.setPersonal(MimeUtility.encodeText("风中落叶<test20120711120200@163.com>"));message.setFrom(from);InternetAddress to = new InternetAddress("test20120711120200@163.com");message.setRecipient(Message.RecipientType.TO, to);message.setSubject(MimeUtility.encodeText("强哥邀请,谁敢不从!"));message.setSentDate(new Date());// 我就当这是一个消息包,类型是混杂的MimeMultipart msgMultipart = new MimeMultipart("mixed");// 指定为混合关系message.setContent(msgMultipart);// 这是消息包里面的一个消息体块MimeBodyPart content = new MimeBodyPart();msgMultipart.addBodyPart(content);// 消息体块包含了一组有依赖关系的元素MimeMultipart bodyMultipart = new MimeMultipart("related"); // 依赖关系content.setContent(bodyMultipart);// 这两个依赖关系的元素是HTML文本内容和依赖的图片资源MimeBodyPart htmlPart = new MimeBodyPart();MimeBodyPart gifPart = new MimeBodyPart();// TODO 组装的顺序非常重要,一定要先组装文本域bodyMultipart.addBodyPart(htmlPart);bodyMultipart.addBodyPart(gifPart);DataSource gifds = new FileDataSource("D:\\123.jpg");DataHandler gifdh = new DataHandler(gifds);gifPart.setDataHandler(gifdh);gifPart.setHeader("Content-Location", "bg.jpg");htmlPart.setContent("<body background='bg.jpg'>"+ "<div style='position: absolute; left: 390px; top: 150px;height: "+ "100px;width: 200px;' align='center'>"+ "这是测试邮件,请勿回复" + "</div></body>","text/html;charset=UTF-8");message.setContent(msgMultipart);message.saveChanges();Transport transport = session.getTransport("smtp");transport.connect("smtp.163.com", 25, "test20120711120200", "test123456");transport.sendMessage(message, message.getAllRecipients());transport.close();System.out.println("发送完毕");}}?
这个有点麻烦
首先是有一个 复杂关系的 MimeMultipart ,然后在这个对象里面增加一个消息体,这个消息体包含了一个是 依赖关系的包 ,这个包内又包含了两个元素
因为涉及到附件,所以你运行时会很慢
?
但是有一个问题
如果你这样指定,那么邮箱会人为你发送了两个普通附件,一个是图片一个是HTML文件
然后邮箱不会显示图片,只是把图片做为了一个普通附件,但是你要是用?foxmail 看的话就会显示
如果你看源码,会发现其实 foxmail? 是把普通附件下载下来,然后图片就是显示本地文件了,而邮箱不会
谁知道怎么解决说一声!
?
如果是增加背景音乐的话,那就把上面的代码改一下,然后你的邮件内容是这样的
?
// 邮件内容mbpFile.setContent("<html><head><bgsound src='bg.mp3' loop='-1'>"+ "</head><body><center><font color='red'>强哥邀请你访问我的博客:http://cuisuqiang.iteye.com/!<br>" +"您听到背景音乐了么?</font></center></body>"+ "</html>", "text/html;charset=UTF-8");?
发送后你用foxmail? 打开就可以听到音乐!
?
最后:
由于近期大量小网站在未经同意情况下使用文章,现将我的博客地址公布如下,请您到ITEYE网站看原创,谢谢!
http://cuisuqiang.iteye.com/?!