- 浏览: 626067 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (448)
- 字符串相关 (16)
- Struts2页面显示 (15)
- Hibernate错误记录 (6)
- linux命令 (2)
- java项目测试 (5)
- 个人作品 (10)
- hibernate应用 (15)
- struts1 (7)
- 数据库(除了hibernate) (42)
- J2ME/WAP (37)
- servlet/jsp (49)
- java桌面应用+java综合 (14)
- 服务器配置,报错解决 (24)
- Myeclipse配置,抛错解决 (8)
- linux (18)
- JavaScript+jquery+ajax (45)
- div css 页面设计 (16)
- 互联网综合运营 (14)
- 编程工具类 (3)
- 论文 报告 文献 (14)
- PHP (26)
- struts2 (9)
- spring (1)
- 我的IT生活 (14)
- Resin (6)
- java项目记录 (14)
- https安全 (11)
- 支付技术 (3)
最新评论
-
yihaijunyxr:
很好呀,我好久没用iteye了,今天找出两个帐号(yihaij ...
c/c++的监听tmlisten启动缓慢解决 -
yihaijun:
好像这不算是技术博客,是工作博客
c/c++的监听tmlisten启动缓慢解决 -
ml365:
后来还优化了webservice的前置框架,不用cxf,用了另 ...
c/c++的监听tmlisten启动缓慢解决 -
Jayliuying:
有点晚哈 但是也支持一下 楼主
java相关论文的参考文献【转】 -
gqsunrise:
...
我是项目经理,我的项目管理日记【20120229】
所谓众口难调,但我相信总有一款适合你
1,在设置邮件主题前需要将主题字串的字节编码为BASE64格式,并添加编码头,示例代码如下:
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
msg.setSubject("=?GB2312?B?"+enc.encode(subject.getBytes())+"?=");
2,((MimeMessage)message).setSubject(subject, "GBK");
3,message.setSubject(new String(ttitle.getBytes("GB2312"),"ISO8859-1"));
4,mailsubject = MimeUtility.encodeText(new String(mailsubject.getBytes(), "GB2312"), "GB2312", "B");
========================================================================
解决内容乱码可以这样:
//设置邮件文字内容部分
MimeBodyPart textBodyPart = new MimeBodyPart();
//这里转换文字内容到gb2312格式。
textBodyPart.setContent(content, "text/html;charset=\"GB2312\"");
//设置邮件附件加载器
MimeBodyPart fileBodyPart = new MimeBodyPart();
javax.activation.FileDataSource fds = new FileDataSource(path);
//要发送的附件
Multipart container = new MimeMultipart();
File f = new File(path);
if (f.exists())
{
fileBodyPart.setDataHandler(new DataHandler(fds));
fileBodyPart.setFileName("=?GBK?B?" +
enc.encode( (fds.getName()).getBytes()) +
"?=");//这里解决了附件名乱码问题
container.addBodyPart(fileBodyPart);//加载附件到邮件容器
}
container.addBodyPart(textBodyPart);
message.setContent(container);//加载容器到消息类
其中的enc实例我是这样定义的:
Base64Converter enc = new Base64Converter();
这里面的Base64Converter类自己可以编写,如下:
public class Base64Converter
{
public static final char[] alphabet = {
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', // 0 to 7
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', // 8 to 15
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', // 16 to 23
'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', // 24 to 31
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', // 32 to 39
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', // 40 to 47
'w', 'x', 'y', 'z', '0', '1', '2', '3', // 48 to 55
'4', '5', '6', '7', '8', '9', '+', '/'}; // 56 to 63
public static String encode(String s)
{
return encode(s.getBytes());
}
public static String encode(byte[] octetString)
{
int bits24;
int bits6;
char[] out
= new char[ ( (octetString.length - 1) / 3 + 1) * 4];
int outIndex = 0;
int i = 0;
while ( (i + 3) <= octetString.length)
{
bits24 = (octetString[i++] & 0xFF) << 16;
bits24 |= (octetString[i++] & 0xFF) << 8;
bits24 |= (octetString[i++] & 0xFF) << 0;
bits6 = (bits24 & 0x00FC0000) >> 18;
out[outIndex++] = alphabet[bits6];
bits6 = (bits24 & 0x0003F000) >> 12;
out[outIndex++] = alphabet[bits6];
bits6 = (bits24 & 0x00000FC0) >> 6;
out[outIndex++] = alphabet[bits6];
bits6 = (bits24 & 0x0000003F);
out[outIndex++] = alphabet[bits6];
}
if (octetString.length - i == 2)
{
bits24 = (octetString[i] & 0xFF) << 16;
bits24 |= (octetString[i + 1] & 0xFF) << 8;
bits6 = (bits24 & 0x00FC0000) >> 18;
out[outIndex++] = alphabet[bits6];
bits6 = (bits24 & 0x0003F000) >> 12;
out[outIndex++] = alphabet[bits6];
bits6 = (bits24 & 0x00000FC0) >> 6;
out[outIndex++] = alphabet[bits6];
out[outIndex++] = '=';
}
else if (octetString.length - i == 1)
{
bits24 = (octetString[i] & 0xFF) << 16;
bits6 = (bits24 & 0x00FC0000) >> 18;
out[outIndex++] = alphabet[bits6];
bits6 = (bits24 & 0x0003F000) >> 12;
out[outIndex++] = alphabet[bits6];
out[outIndex++] = '=';
out[outIndex++] = '=';
}
return new String(out);
}
}
发表评论
-
UrlRewrite Filter下载 配置及如何使用【转】
2011-07-15 22:17 14271 下载地址:http://tuckey.org/urlre ... -
getOutputStream() has already been called for this response 解决
2011-04-25 11:35 896java.lang.IllegalStateException ... -
java web工程中获取根目录的方法[转]
2010-12-12 16:27 36231 若是在JSP或是servlet中要获得虚拟根目录的话, ... -
jsp 用urlrewrite 实现URL 重写【转】
2010-12-12 11:22 928是否看到别人的网站网址名都不带后缀名比较酷,比如qq空间的地址 ... -
构建高性能J2EE应用的十个技巧[转]
2010-12-12 11:04 758构建高性能的J2EE应用 ... -
session彻底删除和登录的session相关操作【原创】
2010-12-12 11:03 1020一般我们在做登陆的时候,是需要保持登陆者的一些信息的,登陆 ... -
利用jsp把数据导出到Excle【原创】
2010-12-12 10:34 1336jsp页面里面只需要: <%@ page l ... -
关于Action里面的跳转方式记录【原创】
2010-12-11 11:00 747我一直忘记了,反正常用的就是那两个吧 一个是: ret ... -
得到时间值java.text.SimpleDateFormat【原创】
2010-12-11 10:50 1059有时候在一些查询的后台,时间作为一个条件是必须的,我们要做 ... -
又一次解决了jsp中文乱码【原创】
2010-12-11 10:45 753这次和数据库有关。数据库里面是乱码,页面的也是乱码。 ... -
想在java文件里用request对象怎么办【原创】
2010-12-11 10:43 1312有时候我们想要在java文件里用request对象,不过j ... -
js跳转页面方法大全,onClick,history,location【转】
2010-12-11 10:38 1296<span id="tiao"> ... -
jsp页面缓存不更新问题解决【原创】
2010-12-11 10:37 2326最近做一个平台,在支付之后余额就会被扣除的,支付成果结果页 ... -
session和request set get Attribute的影响【原创】
2010-12-11 10:35 1118在很多情况下我们都需要封装些数据,以便能在页面跳转之间使用到。 ... -
iframe form 和target的讨论【转】
2010-12-11 10:34 1454刷新主页面中的其中一个iframe,其他内容不变 Soluti ... -
return的作用【原创】
2010-12-11 10:32 1011其实我一直对于return这个功能没有一种很明显的感受。反 ... -
防止浏览器缓存的jsp代码【原创】
2010-12-11 10:27 842//response.setHeader("Ca ... -
org.apache.jasper.JasperException: Invalid directive错误的解决【原创】
2010-12-11 10:24 2612很简单,是因为你的jsp页面引入文件的语句也就是那个几个标签可 ... -
jsp清除session的方法【原创】
2010-12-11 10:16 2432很难吗?不难,一点也难 session.removeAt ... -
提交form另外开一个ie页面处理的方法【原创】
2010-12-11 10:14 842很简单的,简单到你们怕: <form action ...
相关推荐
NULL 博文链接:https://instance.iteye.com/blog/577172
在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...
第90行,setSubject("")
在创建`MimeMessage`或`MimeBodyPart`时,需设置适当的字符集,以避免乱码问题。 4. **添加附件**: 如果需要发送带有附件的邮件,可以使用`MimeBodyPart`类创建一个新的部分,设置其数据源(如文件路径),然后将...
邮件开发过程中会遇到一些常见问题,比如中文附件的乱码问题、Tomcat中JavaMail的支持与冲突,以及如何实现有效的邮件群发。这些问题需要开发者深入理解邮件协议和JavaMail的使用方式来解决。 邮件服务的核心是邮件...
JavaMail API提供了相应的设置,可以避免乱码问题。 5. **发送邮件**:最后,通过`Transport.send()`方法将邮件消息发送出去。在此过程中,JavaMail会与SMTP服务器建立连接,验证身份(如果需要),并传输邮件。 ...
在实际开发中,还会遇到一些常见问题,如中文附件的乱码问题、Tomcat中JavaMail的兼容性和冲突问题,以及如何高效地实现邮件群发。 邮件开发涉及的基本概念包括邮件服务器和电子邮箱。邮件服务器扮演着类似现实生活...
- **字符集问题**:确保所有涉及到字符集的地方都正确设置了编码,避免乱码问题。 - **邮件服务器配置**:根据实际使用的邮件服务商来正确配置邮件服务器地址和其他相关属性。 - **安全问题**:在生产环境中使用 ...
2. **字符编码问题**:HTML 内容的编码需要与邮件的编码一致,以避免乱码问题。 3. **安全性考虑**:不要在代码中硬编码用户名和密码,建议使用环境变量或其他安全的方式进行存储。 综上所述,使用 JavaMail 发送 ...
- 邮件格式问题,比如正文编码不正确导致乱码,或者附件无法正常打开。 - 安全性问题,如需要确保邮件传输过程的安全,可能需要使用SSL/TLS加密。 为了便于开发者使用,JavaMail 提供了多个版本,每个版本可能会...
在设置邮件主题或正文时,必须确保使用正确的字符编码(如UTF-8),并使用MimeUtility的encodeText方法对特殊字符进行编码,以避免乱码问题。 5. **异常处理**: 在发送邮件过程中,可能会遇到网络问题、服务器拒绝...
- 遵循邮件编码规则,尤其是处理非 ASCII 字符时,以防止乱码问题。 - 如果可能,使用 SMTP 服务器的 STARTTLS 或者 SSL/TLS 加密选项。 JavaMail 是 Java 开发者处理电子邮件的强大工具,无论是在企业级应用还是...
对于中文文件名,如果直接使用getBytes()进行编码,可能会导致乱码,因此推荐使用`MimeUtility.encodeWord()`方法,这是一个在JavaMail库中的方法,它遵循RFC2047规范,能正确处理非ASCII字符,例如: ```java ...
在处理中文字符时,JavaMail API支持MIME(多用途互联网邮件扩展)编码,确保非ASCII字符(如中文)在传输过程中不会出现乱码问题。 JSP是Java的一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,实现...
在实现过程中,可能会遇到中文乱码问题。为了避免这种情况,需要确保正确设置字符编码。例如,设置MimeMessage的编码为UTF-8:`message.setEncoding("UTF-8")`,并在创建MimeBodyPart时指定相应编码。 此外,...
利用JavaMail进行邮件开发的发邮件的源代码,其中有四个例子,demo1/demo2是发送简单的邮件,demo3是发送一封html格式(正文为html格式,html代码中有一张图片)...demo4是对demo3的补充,解决了附件的文件名乱码的问题
3. 附件问题:使用MIME技术处理附件,确保编码正确,避免乱码。 六、应用场景 JavaMail组件广泛应用于企业级应用中,如自动发送通知邮件、用户注册验证、系统日志记录、文件传输等场景。 总之,JavaMail组件是Java...
在本案例中,我们将关注如何使用JavaMail发送带有多个附件且不出现中文乱码的邮件,特别是通过163邮箱服务提供商。 1. **JavaMail API基础**: JavaMail API提供了一系列的类和接口,如`Session`,`Message`,`...
- **编码问题**:处理好邮件中的特殊字符和非 ASCII 字符,防止乱码。 通过 JavaMail,开发者可以轻松地在 Java 应用中集成邮件功能,无论是简单的文本邮件还是复杂的多部分邮件,都可以轻松应对。在实际应用中,...