如何用java实现发送html格式的邮件

如题... 如题 展开
 我来答
mikemelon2012
推荐于2017-09-16 · TA获得超过3633个赞
知道大有可为答主
回答量:938
采纳率:87%
帮助的人:377万
展开全部

首先Java发送邮件需要用到JavaMail,先到Oracle官网上下载好最新版本的JavaMail(刚才看了一下,最新是1.5.3),把下载的这个jar文件放到classpath里(如果是Web项目,就放到WEB-INF/lib目录下。

JavaMail主要支持发送纯文本的和html格式的邮件。

发送html格式的邮件的一个例程如下:

 

 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeUtility;
 import javax.mail.Session;
 import javax.mail.MessagingException;
import javax.mail.Transport;
 
public class SendHtmlMail {
     public static void sendMessage(String smtpHost,
                                    String from, String to,
                                    String subject, String messageText)
             throws MessagingException,java.io.UnsupportedEncodingException {
 
         // Step 1:  Configure the mail session
         System.out.println("Configuring mail session for: " + smtpHost);
         java.util.Properties props = new java.util.Properties();
         props.setProperty("mail.smtp.auth", "true");//指定是否需要SMTP验证
         props.setProperty("mail.smtp.host", smtpHost);//指定SMTP服务器
         props.put("mail.transport.protocol", "smtp");
         Session mailSession = Session.getDefaultInstance(props);
         mailSession.setDebug(true);//是否在控制台显示debug信息
 
         // Step 2:  Construct the message
         System.out.println("Constructing message -  from=" + from + "  to=" + to);
         InternetAddress fromAddress = new InternetAddress(from);
         InternetAddress toAddress = new InternetAddress(to);
 
         MimeMessage testMessage = new MimeMessage(mailSession);
         testMessage.setFrom(fromAddress);
         testMessage.addRecipient(javax.mail.Message.RecipientType.TO, toAddress);
         testMessage.setSentDate(new java.util.Date());
         testMessage.setSubject(MimeUtility.encodeText(subject,"gb2312","B"));
 
        testMessage.setContent(messageText, "text/html;charset=gb2312");
         System.out.println("Message constructed");
 
        // Step 3:  Now send the message
         Transport transport = mailSession.getTransport("smtp");
         transport.connect(smtpHost, "webmaster", "password");
         transport.sendMessage(testMessage, testMessage.getAllRecipients());
         transport.close();
 
         System.out.println("Message sent!");
     }
 
     public static void main(String[] args) {
 
         String smtpHost = "localhost";
         String from = "webmaster@mymail.com";
         String to = "mfc42d@sohu.com";
         String subject = "html邮件测试"; //subject javamail自动转码
 
         StringBuffer theMessage = new StringBuffer();
         theMessage.append("<h2><font color=red>这倒霉孩子</font></h2>");
         theMessage.append("<hr>");
         theMessage.append("<i>年年失望年年望</i>");
         try {
            SendHtmlMail.sendMessage(smtpHost, from, to, subject, theMessage.toString());
         }
         catch (javax.mail.MessagingException exc) {
             exc.printStackTrace();
         }
         catch (java.io.UnsupportedEncodingException exc) {
             exc.printStackTrace();
         }
     }
 }


JavaMail是封装了很多邮件操作的,所以使用起来不很困难,建议你到JavaMail官网看一下API或下载Java Doc API文档。

豆妈故事会
2009-09-09 · TA获得超过736个赞
知道小有建树答主
回答量:401
采纳率:0%
帮助的人:248万
展开全部
你可以试试seam的邮件发送,十分简单,而且支持html格式的邮件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
走走停停wzj
推荐于2017-09-01 · TA获得超过224个赞
知道答主
回答量:101
采纳率:0%
帮助的人:89.8万
展开全部
刚刚写的一个发mail的程序:

import java.util.ArrayList;
import java.util.Collection;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;

public class MailTest {

public static void sendHtmlEmail() {
String subject = "Test Mail";
Collection<String> sendTo = new ArrayList<String>();
sendTo.add("abc@gmail.com");
String htmlMessage = "<html><body><font size='15' color='red'>This is a test mail.</font></body></html>";

// Create email message
HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.gmail.com");
email.setSSL(true);
email.setSslSmtpPort("465");

email.setSubject(subject);
email.setCharset("GB2312");

email.setAuthentication("abc", "1111");
try {
email.setFrom("def@gmail.com");
for(String aTo : sendTo){
email.addTo(aTo);
}
email.setHtmlMsg(htmlMessage);
// send email
email.send();
} catch (EmailException ee) {
ee.printStackTrace();
}
}

public static void main(String args[]){
sendHtmlEmail();
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
啸月迎风
2009-09-09
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
javamail不就可以吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式