老本家
http://java.sun.com/products/javamail/index.jsp
developerworks 的教程 JavaMail API 基础
https://www6.software.ibm.com/developerworks/cn/education/java/j-javamail/tutorial/index.html
本地下载
JavaMail FAQ: 好东西
http://java.sun.com/products/javamail/FAQ.html
无中文困挠的使用JavaMail收取邮件
http://www.javayou.com/showlog.jspe?log_id=372
使用JavaMail的邮件发送组件
http://www.javayou.com/showlog.jspe?log_id=136
最后一个就是简化了javamail开发的。
Jakarta Commons Emails
---------------------------------------------------------------------------------
以前写的一篇介绍:
《简化JavaMail:小巧 Jakarta Commons-Email 简单教程 》
顺便再整理一下,朋友讨论的关于一些jakarta commons email出现乱码的问题:
一:通过SimpleEmail发送中文内容出现乱码的问题
SimpleEmail的代码如下
1
public class SimpleEmail extends Email
{
2
/** *//**
3
* Set the content of the mail
4
*
5
* @param msg A String.
6
* @return An Email.
7
* @throws EmailException see javax.mail.internet.MimeBodyPart
8
* for definitions
9
* @since 1.0
10
*/
11
public Email setMsg(String msg) throws EmailException
{
12
if (EmailUtils.isEmpty(msg))
{
13
throw new EmailException("Invalid message supplied");
14
}
15
setContent(msg, Email.TEXT_PLAIN);
16
return this;
17
}
18
}
只是采用默认的,
并没有指定编码。
如果通过SimpleEmail发送,需要指定编码: Water Ye@ITO 的说明
二:关于附件中文名称乱码的问题:
需使用MimeUtility
原因是在MIME的相应规范中(RFC2047等)说明了附件标题必须是US-ASCII字符, 所以在发送中文标题的附件时需要编码成US-ASCII字符, 有两种编码方式: B (BASE64), Q (Quoted-Printable), 这些方法在MimeUtility里
都已经做了封装, 所以在发送附件时使用如下:
end
---------------------------------------------------------------------------------
我想这些资源已经足够 o_o
你还想知道什么:)

public class SimpleEmail extends Email
{2

/** *//**3
* Set the content of the mail4
*5
* @param msg A String.6
* @return An Email.7
* @throws EmailException see javax.mail.internet.MimeBodyPart8
* for definitions9
* @since 1.010
*/11

public Email setMsg(String msg) throws EmailException
{12

if (EmailUtils.isEmpty(msg))
{13
throw new EmailException("Invalid message supplied");14
}15
setContent(msg, Email.TEXT_PLAIN);16
return this;17
}18
}
只是采用默认的,
1
public static final String TEXT_PLAIN = "text/plain";
public static final String TEXT_PLAIN = "text/plain";
并没有指定编码。
如果通过SimpleEmail发送,需要指定编码: Water Ye@ITO 的说明
1
email.setContent("测试邮件", "text/plain;charset=GBK");
email.setContent("测试邮件", "text/plain;charset=GBK");
二:关于附件中文名称乱码的问题:
需使用MimeUtility
原因是在MIME的相应规范中(RFC2047等)说明了附件标题必须是US-ASCII字符, 所以在发送中文标题的附件时需要编码成US-ASCII字符, 有两种编码方式: B (BASE64), Q (Quoted-Printable), 这些方法在MimeUtility里
都已经做了封装, 所以在发送附件时使用如下:
1
MimeUtility.encodeText(filename));
MimeUtility.encodeText(filename));
1
EmailAttachment attachment = new
EmailAttachment();
2
attachment.setPath("c:\测试.txt"
);
3
attachment.setDisposition(EmailAttachment.ATTACHMENT);
4
attachment.setDescription("测试文件"
);
5
6 //
7
attachment.setName(MimeUtility.encodeText("测试文件.txt"));
8
9
MultiPartEmail email = new
MultiPartEmail();
10
email.setHostName("192.168.0.3"
);
11
email.setAuthentication("martin.xus", "1234"
);
12
email.addTo("martin.xus@192.168.0.3", "martin"
);
13
email.setFrom("martin.xus@192.168.0.3", "martin"
);
14
15
email.setSubject("测试带附件"
);
16
email.setMsg("该邮件含附件"
);
17
//添加附件
18
email.attach(attachment);
19
//发送邮件
20
email.send();
EmailAttachment attachment = new
EmailAttachment();2
attachment.setPath("c:\测试.txt"
);3
attachment.setDisposition(EmailAttachment.ATTACHMENT);4
attachment.setDescription("测试文件"
);5
6 //

7
attachment.setName(MimeUtility.encodeText("测试文件.txt"));8

9
MultiPartEmail email = new
MultiPartEmail();10
email.setHostName("192.168.0.3"
);11
email.setAuthentication("martin.xus", "1234"
);12
email.addTo("martin.xus@192.168.0.3", "martin"
);13
email.setFrom("martin.xus@192.168.0.3", "martin"
);14

15
email.setSubject("测试带附件"
);16
email.setMsg("该邮件含附件"
);17
//添加附件
18
email.attach(attachment);19
//发送邮件
20
email.send();
end
---------------------------------------------------------------------------------
我想这些资源已经足够 o_o
你还想知道什么:)

2739

被折叠的 条评论
为什么被折叠?



