`
fireflyjava
  • 浏览: 187944 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用Spring的javamail注意的中文问题

阅读更多
使用Spring 的封装的MailSender,确实省事多了!
但在使用中,还是得注意些问题

1.增加验证,否则会报:553 authentication is required 的错误信息
Properties prop = new Properties();
prop.setProperty("mail.smtp.auth", "true");
JavaMailSenderImpl.setJavaMailProperties(prop);

2.当邮件内容是HTML语言时的中文问题:
初始化MimeMessageHelper辅助类时,设置"GBK" encoding!
如:
MimeMessageHelper messageHelp = new MimeMessageHelper(message,true,"GBK");
同时在设置:<META http-equiv=Content-Type content='text/html; charset=GBK'>
如果都设置为"UTF-8",在某些邮件客户端标题是冷僻字时,不能正常显示!

3.邮件附件的中文问题!
spring的文档里面说MimeMessageHelper设置了encoding,同时对title,text,attach产生作用,但还是会出问题:
解决方法:MimeUtility.encodeWord(file.getName());就OK了!

以下是可以运行的代码
SendMailDemo.java

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.Properties;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;

import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

public class SendMailDemo {
	public  void send163ByMutil() throws MessagingException {
		JavaMailSenderImpl javaMail = new JavaMailSenderImpl();
		javaMail.setHost("smtp.163.com");
		javaMail.setPassword("passowrd");
		javaMail.setUsername("username");
		Properties prop = new Properties();
		prop.setProperty("mail.smtp.auth", "true");		
		javaMail.setJavaMailProperties(prop);
		MimeMessage message = javaMail.createMimeMessage();
		MimeMessageHelper messageHelp = new MimeMessageHelper(message,true,"GBK");
		messageHelp.setFrom("likun35@163.com");
		messageHelp.setTo("likun35@163.com");
		messageHelp.setSubject("邮件测试");
		// messageHelp
		String body = "<html><head><META http-equiv=Content-Type content='text/html; charset=GBK'></HEAD><title>test</title></head><body>dear 小燕子 \n ";
		body+="<red>This is Text!</red> pic <img src='cid:a'></img><br>hello<img src='cid:b'></img></body></html>";
		messageHelp.setText(body, true);
		messageHelp.addInline("a", new File("E:/xiezi.jpg"));
		messageHelp.addInline("b", new File("E:/logo.png"));		
		File file=new File("E:/Favorites中文文件.rar");		
		try {
			messageHelp.addAttachment(MimeUtility.encodeWord(file.getName()), file);
		} catch (UnsupportedEncodingException e) {			
			e.printStackTrace();
		}
		javaMail.send(message);
	}
	public static void main(String[] args) throws MessagingException {		
		SendMail send=new SendMail();
		send.send163ByMutil();

	}
}
分享到:
评论
8 楼 sskhnje 2007-06-29  
贴了这么多天了, 敬请博客主人帮忙.
在些拜谢! 
7 楼 sskhnje 2007-06-22  
你的这个代码还是有点问题
我完全复制下来, 然后发送.
只有126的邮箱能正常显示, 其他如hotmail, qq邮箱等都显示如下.

急切盼望能得到您的指导, 谢谢!

Y@microsof-059302>
Date: Fri, 22 Jun 2007 20:48:59 +0800 (CST)
From: sskhnje@163.com
To: sskhnje@mail.ynu.edu.cn
Subject: =?GBK?B?08q8/rLiytQ=?=
Mime-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_Part_0_16259139.1182516532869"
X-Coremail-Antispam: 1U3Yxn0WfASr-VFAUDIcSsGvfJTRUUUj28FxVCF77xC6IxKo4
kEV4ylw4CEc2x0rVAKj4xxM4xvF2IEb7IF0Fy264kE64k0F24lx4CE17CEb7AF67AKxVWU
JVWUXwCjxxvEw4WlFcxC0VAqx4xG64AKrs4lc2IjII80xcxEwVWUZVWUtwASzI0EjI02j7
AqF2xKxwASY2vE4c8EcI0ErcxK0VAFwI0_JcC_GcWl4x8a6c8ajcxJMcIj6I8E87Iv67AK
xVWUJVW8JwAFxVCaYxvI4VCIwcAKzIAtMxkIecxEwVAFwVW5JwAFF20E14v26r1j6r4UMc
Ij6xIIjxv20xvE14v26r106r15M7kC6x804xWl1IIY67AEw4v_Jr0_Jr4l5I8CrVAvF7xS
0VAEw40v6r17Mc02F40EY4x0e2IEc7I2Y4C_Jrylc7Ca8VAvwVCqb41lb7Iv0xC_CrUanT
9S1TB71UUUUUUa7-sFnT9fn5n5KrsFqrs0vFZ2ywnF9Fs7X393tF9ayF93uF4DKa4xWjIF
yTuYvjxUX0PfDUUUUUAaLaJ3U

------=_Part_0_16259139.1182516532869
Content-Type: multipart/related;
boundary="----=_Part_1_17829242.1182516532899"

------=_Part_1_17829242.1182516532899
Content-Type: text/html;charset=GBK
Content-Transfer-Encoding: quoted-printable

<html><head><META http-equiv=3DContent-Type content=3D'text/html; charset =
=3DGBK'><title>test</title></head><body> dear =D0=A1=D1=E0=D7=D3<br> <font =
color=3D'red'>This is Text!</font> pic <img src=3D'cid:a'></img><br>hello<i=
mg src=3D'cid:b'></img></body></html>
------=_Part_1_17829242.1182516532899
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Disposition: inline
Content-ID: <a>

R0lGODlhKQAlAPcAAABSAABjMQDOYwgICGOcY3tjOc7OnPfv3v9jAP+cMf/GQv//Y///pf//////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
6 楼 cskysnew 2007-04-24  
谢谢lz的文章,又可以少走弯路了。
5 楼 scut_xiaqi 2007-04-24  
谢谢楼主,这个问题困扰了我好久,现在终于解决了
4 楼 wcjmaomao 2007-03-16  
对好象是设置编码为gbk的,我用spring发邮件的时候那个乱码问题害了我两天,后面把编码改为gbk就行拉,真的是郁闷的问题!
3 楼 cavenaghi 2007-03-13  
不知道楼主有没有这样用过:为了让邮件的接受者,可以在邮件的客户端,或者直接登陆网上邮局时,可以看到你邮件发送者的姓名,需要进行下面的调用:
messageHelp.setFrom("李昆 <likun35@163.com>");

可这样,发到用户那里的话就会有乱码,我想了半天也想不到怎么解决,大家一起探讨一下吧
2 楼 cavenaghi 2007-03-13  
不知道楼主有没有这样用过:为了让邮件的接受者,可以在邮件的客户端,或者直接登陆网上邮局时,可以看到你邮件发送者的姓名,需要进行下面的调用:
messageHelp.setFrom("李昆 <likun35@163.com>");

可这样,发到用户那里的话就会有乱码,我想了半天也想不到怎么解决,大家一起探讨一下吧
1 楼 tikii 2006-12-26  
呵呵,帮了我的忙哦.谢谢啊,缘分哦.

相关推荐

    Spring javaMail发送文本邮件实例

    导入到Myeclipse 即可运行 测试使用的是QQ邮箱 在application.xml中配置的发送邮箱 要到邮箱中设置 POP3/SMTP服务为开。项目不部署到tomcat后启动服务,然后运行test.java 就发送了,。绝对可以发送

    spring结合javamail开发文档

    在实际的应用场景中,使用Spring结合JavaMail发送邮件时需要注意以下几点: 1. **配置安全性**: - 确保邮件服务器的连接使用安全协议,如使用SMTPS代替SMTP。 2. **处理失败情况**: - 在发送邮件失败时,记录...

    Spring实现JavaMail邮件发送功能

    在本篇文章中,我们将深入探讨如何利用Spring来实现JavaMail邮件发送,以及在实际应用中需要注意的关键点。 首先,我们需要理解JavaMail API的基础概念。JavaMail是一个用于处理邮件的开放源码API,它允许开发者...

    spring javamail 来发送动态生成的3D图象.doc

    在本文中,我们将探讨如何使用Spring和JavaMail发送动态生成的3D图像,特别是针对Web应用环境。在处理高流量的Web应用时,我们需要避免在服务器上存储大量的3D图像,以节省存储空间。这里的关键是利用JavaMail的特性...

    Spring整合JavaMail发送qq邮件

    当我们需要在Spring应用中实现邮件发送功能时,通常会整合Spring与JavaMail。下面将详细讲解如何利用Spring整合JavaMail发送QQ邮件。 首先,我们需要在项目中引入JavaMail的相关依赖。在Maven项目中,可以在pom.xml...

    SpringUseJavaMailSendEmail(spring使用javamail发送邮件的例子)

    本示例将详细解释如何在Spring框架中结合JavaMail API来发送电子邮件。 首先,我们需要理解Spring框架中的邮件服务抽象。Spring提供了一个`JavaMailSender`接口,该接口定义了发送邮件的基本方法。我们可以通过配置...

    spring+javamail代码示例

    在IT行业中,Spring框架是Java应用开发的基石,它提供了丰富的功能来简化应用程序的构建,而JavaMail API则是一个用于处理电子邮件的库。本示例将深入探讨如何结合Spring框架和JavaMail API来发送电子邮件,这在许多...

    javamail问题及解决方案

    通过以上分析,我们可以看到,JavaMail虽然功能强大,但在实际使用中仍需注意细节,尤其是邮件服务器的配置和身份验证部分。遵循最佳实践,可以有效减少问题的发生,提高应用程序的稳定性和安全性。

    在spring利用javamail,quartz定时发送邮件

    通过上述步骤,我们不仅了解了如何在Spring环境中结合JavaMail和Quartz实现定时邮件发送,而且还深入探索了Spring框架如何简化JavaMail API的使用,以及Quartz如何提供灵活的定时任务调度能力。这种技术组合为Web...

    使用JAVAMail代发邮件

    使用 JavaMail 代发邮件 使用 JavaMail 库可以轻松地在 Java 应用程序中发送电子邮件。JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件...

    JavaMail 内存溢出问题

    在实际使用过程中,可能会遇到内存溢出(Memory Overflow)的问题,这通常是由于邮件处理不当或资源管理不善导致的。本篇文章将深入探讨 JavaMail 中内存溢出问题的成因、解决策略以及相关源码分析。 一、内存溢出...

    javamail 中文API文档

    ### JavaMail API中文文档知识点详解 #### 一、概述 JavaMail API是Java平台上的电子邮件解决方案,它提供了一组用于发送、接收、管理和处理电子邮件消息的API。JavaMail API主要包含以下几个核心概念:会话...

    linux服务器报警—使用javamail

    "Linux服务器报警—使用javamail"这个主题就涉及到了如何利用JavaMail API在Linux环境中实现自动发送邮件报警的功能。JavaMail是一个开源库,它允许开发者在Java应用中添加电子邮件功能,包括发送和接收邮件。 首先...

    使用javamail包收发中文邮件的编码,解码问题以及解决方法.pdf

    使用 JavaMail 包收发中文邮件需要注意编码和解码的问题。通过使用 MimeUtility 工具和 encodeText 方法,可以对中文信息进行编码,並将编码方式的信息放入邮件头中。在解码方面,需要注意字符集的正确性,以便正确...

    javamail+spring

    JavaMail主要用于处理电子邮件的发送和接收,而Spring则是一个广泛使用的框架,它提供了依赖注入、面向切面编程、数据访问、事务管理等多种功能。将JavaMail集成到Spring中,可以方便地在应用中实现邮件服务,比如...

    javamail使用的jar包

    JavaMail 的使用通常需要依赖一组特定的 JAR 包,这些包包含了实现 SMTP、POP3、IMAP 等邮件协议的类和方法。 在描述中提到的 "javamail-1.4.4" 可能是指 JavaMail API 的一个版本号,这通常是一个包含所有必要组件...

    Android 使用javamail发送邮件

    总的来说,"Android使用javamail发送邮件"这个主题涵盖了Android平台上利用JavaMail API实现邮件发送的基本流程和注意事项,包括设置SMTP服务器、构建邮件消息、处理附件以及可能的安全性和用户体验优化。...

    javamail使用demo示例

    这个"javamail使用demo示例"是JavaMail官方提供的一个实例集合,旨在帮助开发者更好地理解和应用JavaMail库。下面我们将深入探讨JavaMail的核心概念、主要功能以及如何使用这些示例代码。 一、JavaMail核心概念 1....

    javamail(带界面的javamail)

    对于邮件接收,JavaMail 使用 Store 和 Folder 类来连接邮件服务器并获取邮件。你可以选择 POP3 或 IMAP 协议,根据用户的需求,可以设置为只读或读写模式。Folder 对象代表邮件文件夹,如“收件箱”、“已发送”等...

Global site tag (gtag.js) - Google Analytics