欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

使用javamail发送内嵌图片的html格式邮件,javamail内嵌,使用JavaMail可以

来源: javaer 分享于  点击 42693 次 点评:200

使用javamail发送内嵌图片的html格式邮件,javamail内嵌,使用JavaMail可以


使用JavaMail可以很方便的发送html格式的邮件,只需要将content-type设置为"text/html"即可。

import javax.mail.*;import javax.mail.internet.*;import java.util.Properties;class SimpleMail {    public static void main(String[] args) throws Exception{        System.out.println("Sending mail...");        Properties props = new Properties();        props.setProperty("mail.transport.protocol", "smtp");        props.setProperty("mail.host", "smtp.mymailserver.com");        props.setProperty("mail.user", "myuser");        props.setProperty("mail.password", "mypwd");        Session mailSession = Session.getDefaultInstance(props, null);        mailSession.setDebug(true);        Transport transport = mailSession.getTransport();        MimeMessage message = new MimeMessage(mailSession);        message.setSubject("HTML  mail with images");        message.setFrom(new InternetAddress("me@sender.com"));        message.setContent("<h1>Hello world</h1>", "text/html");        message.addRecipient(Message.RecipientType.TO,             new InternetAddress("you@receiver.com"));        transport.connect();        transport.sendMessage(message,            message.getRecipients(Message.RecipientType.TO));        transport.close();        }}

要在邮件中包含图片简单办法是使用image标签,src指向服务器上图片的位置。

import javax.mail.*;import javax.mail.internet.*;import java.util.Properties;class SimpleMail1 {    public static void main(String[] args) throws Exception{        System.out.println("Sending mail...");        Properties props = new Properties();        props.setProperty("mail.transport.protocol", "smtp");        props.setProperty("mail.host", "smtp.mymailserver.com");        props.setProperty("mail.user", "myuser");        props.setProperty("mail.password", "mypwd");        Session mailSession = Session.getDefaultInstance(props, null);        mailSession.setDebug(true);        Transport transport = mailSession.getTransport();        MimeMessage message = new MimeMessage(mailSession);        message.setSubject("HTML  mail with images");        message.setFrom(new InternetAddress("me@sender.com"));        message.setContent          ("<h1>This is a test</h1>"            + "<img src=\"http://www.rgagnon.com/images/jht.gif\">",            "text/html");        message.addRecipient(Message.RecipientType.TO,             new InternetAddress("you@receiver.com"));        transport.connect();        transport.sendMessage(message,            message.getRecipients(Message.RecipientType.TO));        transport.close();        }}

上面发送带图片邮件的方法很简单,但是有些邮件客户端会把是否包含有服务器端图片作为垃圾邮件的判断机制。我们可以将图片内嵌到邮件中,然后用cid加content-id引用内嵌的图片。

import javax.mail.*;import javax.mail.internet.*;import javax.activation.*;import java.util.Properties;class SimpleMail2 {    public static void main(String[] args) throws Exception{        System.out.println("Sending mail...");        Properties props = new Properties();        props.setProperty("mail.transport.protocol", "smtp");        props.setProperty("mail.host", "smtp.mymailserver.com");        props.setProperty("mail.user", "myuser");        props.setProperty("mail.password", "mypwd");        Session mailSession = Session.getDefaultInstance(props, null);        mailSession.setDebug(true);        Transport transport = mailSession.getTransport();        MimeMessage message = new MimeMessage(mailSession);        message.setSubject("HTML  mail with images");        message.setFrom(new InternetAddress("me@sender.com"));        message.addRecipient(Message.RecipientType.TO,             new InternetAddress("you@receiver.com"));        //        // This HTML mail have to 2 part, the BODY and the embedded image        //        MimeMultipart multipart = new MimeMultipart("related");        // first part  (the html)        BodyPart messageBodyPart = new MimeBodyPart();        String htmlText = "<H1>Hello</H1><img src=\"cid:image\">";        messageBodyPart.setContent(htmlText, "text/html");        // add it        multipart.addBodyPart(messageBodyPart);        // second part (the image)        messageBodyPart = new MimeBodyPart();        DataSource fds = new FileDataSource          ("C:\\images\\jht.gif");        messageBodyPart.setDataHandler(new DataHandler(fds));        messageBodyPart.setHeader("Content-ID","<image>");        // add it        multipart.addBodyPart(messageBodyPart);        // put everything together        message.setContent(multipart);        transport.connect();        transport.sendMessage(message,            message.getRecipients(Message.RecipientType.TO));        transport.close();        }}
相关栏目:

用户点评