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())
}