java 邮件中怎么发送html文件的

html-css06

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

public static void parseMail(java.io.InputStream in) throws IOException {

Message msg = new Message(in)// 读入邮件

parseBody(msg, msg.getBody())// 取出邮件内容

}

private static void parseBody(Entity e, Body body) throws IOException {

if (body instanceof Multipart) {

parseMultipart(e, (Multipart) body)

} else if (body instanceof TextBody) {

parseTextBody(e, (TextBody) body)

} else if (body instanceof BinaryBody) {

parseBinaryBody(e, (BinaryBody) body)

}

}

private static void parseMultipart(Entity e, Multipart body) throws IOException {

List<BodyPart> mbp = body.getBodyParts()

for (BodyPart bp : mbp) {

parseBody(bp, bp.getBody())

}

}

private static void parseTextBody(Entity e, TextBody body) throws IOException {

Reader r = body.getReader()

// .....解析文本,可以考虑Jsoup等工具.....

}

private static void parseBinaryBody(Entity e, BinaryBody body) throws IOException {

InputStream inputStream = body.getInputStream()

// 将数据流写入到指定文件

FileOutputStream fos = new FileOutputStream(e.getFilename())

}