带有附件及图片正文的JavaMail邮件发送
2014-09-19 10:48
711 查看
package javamail; import java.io.UnsupportedEncodingException; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Message; import javax.mail.Message.RecipientType; import javax.mail.Authenticator; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; 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 TestMail03 { public static void main(String[] args) { try { Properties props = new Properties(); props.setProperty("mail.transport.protocol", "smtp"); /** * 设置发送邮件的服务器,不同的邮箱服务器不一致,可以在邮箱的帮助中查询 */ props.setProperty("mail.host", "smtp.126.com"); /** * 设置发送服务器验证,一些邮箱需要增加这个验证才能发送邮件 */ props.setProperty("mail.smtp.auth", "true"); /** * 当需要使用Transport.send发送时,需要将用户名和密码设置到Session中 */ Session session = Session.getDefaultInstance(props,new Authenticator() { /** * 通过Authenticator中 的getPasswordAuthentication的方法来设置邮箱的用户名和密码 */ @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("xiaohui390", "soul-390"); } }); session.setDebug(true); Message msg = new MimeMessage(session); /** * 使用MimeUtility.encodeText可以将中文编码 */ msg.setFrom(new InternetAddress(MimeUtility.encodeText("王辉")+"<xiaohui390@126.com>")); msg.setRecipient(RecipientType.TO,new InternetAddress(MimeUtility.encodeText("阿飞")+"<415519522@qq.com>")); msg.setSubject("一封邮件"); /** * 创建整个邮件的Multipart,因为邮件的内容已经不仅仅只是纯文本或者纯html文本,而需要添加 * 相应的附件,此时就得通过Multipart来创建 */ Multipart emailPart = new MimeMultipart(); /** * Multipart不能直接加入内容,需要通过BodyPart来加入内容,假设有两个附件就需要三个BodyPart * 两个用来存储附件,一个用来存储邮件的正文 */ MimeBodyPart att1 = new MimeBodyPart(); /** * 为第一个附件设置文件,DataHandler是在JAF包中,如果使用的是jdk1.4的版本需要手动下载这个包 */ att1.setDataHandler(new DataHandler(new FileDataSource("d:/1.txt"))); att1.setFileName("1.txt"); /** * 创建了第二个附件 */ MimeBodyPart att2 = new MimeBodyPart(); att2.setDataHandler(new DataHandler(new FileDataSource("d:/1.txt"))); //要解决中文的问题需要通过一个MimeUtility这个类来编码中文 att2.setFileName(MimeUtility.encodeText("你好.txt")); MimeBodyPart content = new MimeBodyPart(); /** * 由于文件的正文还有图片和内容,所以也需要通过Multipart来创建 */ MimeMultipart contentMultipart = new MimeMultipart(); /** * 然后再创建相应的BodyPart来设置内容 */ MimeBodyPart imgBody = new MimeBodyPart(); /** * 创建了正文中的图片内容 */ imgBody.setDataHandler(new DataHandler(new FileDataSource("d:/02.jpg"))); /** * 为这个图片设置一个id,在正文中可以通过cid:xxx来访问 */ imgBody.setContentID("smile"); MimeBodyPart htmlBody = new MimeBodyPart(); htmlBody.setContent("<h1>这个是一个带有附件的图片</h1><img src='cid:smile'/>", "text/html;charset=utf-8"); contentMultipart.addBodyPart(imgBody); contentMultipart.addBodyPart(htmlBody); //完成了邮件正文的设置 content.setContent(contentMultipart); /** * 设置邮件的信息 */ //添加第一个附件 emailPart.addBodyPart(att1); //添加第二个附件 emailPart.addBodyPart(att2); //添加邮件正文 emailPart.addBodyPart(content); //设置邮件的信息 msg.setContent(emailPart); Transport.send(msg); } catch (AddressException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } }
相关文章推荐
- JAVAMAIL发送邮件正文是html格式并且显示图片还带有附件的邮件
- JAVAMAIL发送邮件正文是html格式并且显示图片还带有附件的邮件
- JavaMail实现带有附件、内嵌图片的邮件发送
- Java程序中使用JavaMail发送带图片和附件的邮件
- android 发送邮件(android自带email和javamail)均可发送带有多个附件
- 邮件实现详解(四)------JavaMail 发送(带图片和附件)和接收邮件
- JavaMail发送带图片正文的邮件,outlook等邮箱不显示的问题
- JavaMail发送邮件带有附件
- JavaMail实现带附件和图片的邮件发送功能
- Android 使用javaMail jar包发送邮件到指定邮箱,并可以发送图片附件
- javamail发送带有附件的邮件时遇到的乱码问题解决方案
- python发送邮件,含有正文,附件,正文中含有图片(图片直接在邮件内容中显示)
- 发送带有正文以及附件的邮件
- Spring 发送带有内嵌图片和附件的邮件的java程序
- php发送带有图片和附件的邮件
- javaMail 发送邮件(附件及正文)
- 用Java Mail发送带有图片附件的html格式邮件
- 【C#工具类】发送邮件(带有图片和附件)
- java发送邮件,正文图片,附件
- javaMail邮件发送模版(实现图片、附件的添加)