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

html-css019

如何用java实现发送html格式的邮件,第1张

首先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/htmlcharset=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 = "[email protected]"

         String to = "[email protected]"

         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文档。

要使用Javascript,先创建Date对象的实例(也叫做对象的引用)。创建实例的语法有如下三种。

var newDateObj = new Date() 

var newDateObj = new Date(dateVal) 

var newDateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]])

例如,var D = new Date()。

方法1,是无参数调用,创建后对象D中含有计算机的系统日期和时间。

方法2,dateVal参数是数值或表示日期时间的字符串。如果是数字值,dateVal 表示指定日期与 1970 年 1 月 1 日午夜间全球标准时间的毫秒数。如果是字符串,则 dateVal 按照 parse 方法中的规则进行解析。dateVal 参数也可以是从某些 ActiveX(R) 对象返回的 VT_DATE 值。

方法3,用参数直接为新建对象提供日期和时间的数据。

建立了Date对象以后,就可以使用get方法取得日期或时间的值,返回值一般是数值型的。用set方法给一个Date型对象设置数据。Date的方法函数的语法一般格式为:

D.getXXXX()   和   D.setXXXX( variable list)

其中XXXX是相关的字符串,即Year, Month, Date, day,Hours, Minutes, Seconds, Milliseconds,Time, FullYear 等。get方法一般都是无参数的。variable list是set方法要求的参数列表。详细语法请参考下面的例程。

在Javascript中还有使用全球标准时间的方法,其语法是在上面的语法形式的XXXX前面加上UTC三个字母。

此外,还有几个方法。

1,getTimezoneOffset()方法  返回当地时间和UTC时间的时差(分钟数)。

2,getVarDate( )方法      返回T_DATE 值。

3,toLocaleString( )方法  返回表示本地时间的字符串。

4,toUTCString() 方法     返回表示全球标准时间的字符串。

Date.parse(dateVal)

解析一个包含日期的字符串,并返回该日期与 1970 年 1 月 1 日午夜之间所间隔的毫秒数。其中 dateVal 是一个包含以诸如 "Jan 5, 1996 08:47:00" 的格式表示的日期的字符串,或者是一个从 ActiveX(R) 对象或其他对象中获取的 VT_DATE 值。

Date.UTC(year, month, day[, hours[, minutes[, seconds[,ms]]]])

返回全球标准时间UTC(或 GMT)的 1970年1月1日到所指定日期之间所间隔的毫秒数。