`
yanghengtao
  • 浏览: 3284 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

javamail 发送邮件 内容乱码问题的解决

阅读更多

转:javamail 发送邮件 内容乱码问题的解决

 


很少写博客,今天必须得把这个情况写下来。。。。搞了一天。
 
BUG描述:本地测试,正常发送邮件。部署到linux服务器(无中文)后,发送邮件无主题,无收件人,正文中是乱码。
 
 
 
我有一篇文章http://www.cnblogs.com/XL-Liang/articles/2843937.html,介绍的是如何使用javamail发送邮件。我在项目中使用的就是这个方式发送邮件。
 
我的项目是使用maven引入包的,pom.xml中的配置如下:
 


<dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-javamail_1.4_spec </artifactId>
        <version>1.3</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
           <artifactId>commons-email</artifactId>
            <version>1.2</version>
    </dependency>


 
 
这种配置方式来自于互联网~~~~,坑爹啊~~~~。问题就出在这里!!下面是我通过程序发送的邮件在QQ邮箱中接收到的样子。
 


一开始我我还以为是乱码,处理了很长时间的编码问题。一直都没有效果,最后发现大概不是编码问题,最后我在网上看到了一篇文章,地址是:http://jayklin.iteye.com/blog/1441548
 
这里面有一句话说:这个是因为jar包的问题。没有使用标准版的javamail.jar,而是项目中,加载了geronimo-javamail_1.4_spec-1.3.jar这个包导致的。
 
于是将pom.xml中上面的配置改为下面这样:  
 


<dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.1</version>
    </dependency>


重新生成 Eclipse 项目文件之后,将项目打包提交到服务器,问题解决了。
 
解决问题时还看到另一篇文章,说的也基本是这个意思。。该文章主要内容如下:
 
Spring javaMail发送邮件无主题,无收件人,附件显示在正文中而且是乱码的的问题,
程序中显示邮件发送成功,但邮箱收不到邮件,查看debug 邮件处理过程发现邮件头没有编译,
内容是base64编码,所以邮箱收不到或者收到的是base64编码后的一堆乱码,
这个问题理困扰我一个多星期,首先以为代码有问题改编码,又改邮箱,再解码结果浪费了很多时间,
因为是在我测试的工程中好用,移到我的正式工程后就不好用了。
最后怀疑和工程中的JAR包有冲突。就一个一个测试,最后发现问题所在,这才是最根本的问题原来工程中有两个包。

geronimo-activation_1.1_spec-1.0.2.jar
geronimo-javamail_1.4_spec-1.3.jar

这两个包和我测试中工程包有冲突删除就一切OK了。

另外有可能和Myeclipse中安装目录下面的jar包有冲突 删除即可。
位置在:
\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.0.1.zmyeclipse601200710\data\libraryset\EE_5\javaee.jar
 里的javaee.jar 解压出来 将其中的activation.jar和mail.jar文件夹删了
 然后重新导入了javaMail.jar 中的两个包 mail.jar和activation.jar…  此时可以发送邮件! 

分享到:
评论

相关推荐

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    对于JavaMail发送邮件过程中遇到的各种问题,通过细致地检查邮件构建逻辑、确保邮件头部信息正确设置、合理配置邮件内容编码以及完善项目环境配置,可以有效解决大多数问题。同时,利用调试工具深入理解邮件发送的...

    javamail发送邮件 主题乱码解决

    第90行,setSubject("")

    james和javamail实现邮件收发(带发送附件)

    下面是一个简化的JavaMail发送邮件的过程: 1. **配置邮件会话**:首先,我们需要创建一个`Properties`对象,并设置SMTP服务器的相关参数,如主机名和端口号。然后,通过`Session.getInstance()`方法初始化一个邮件...

    javamail发送html邮件

    2. **字符编码问题**:HTML 内容的编码需要与邮件的编码一致,以避免乱码问题。 3. **安全性考虑**:不要在代码中硬编码用户名和密码,建议使用环境变量或其他安全的方式进行存储。 综上所述,使用 JavaMail 发送 ...

    jsp/servlet javamail 发送邮件 可发送多个附件

    2. **SMTP服务器配置**: 在使用JavaMail发送邮件时,首先需要配置SMTP服务器的相关信息,包括主机地址、端口号、用户名和密码。这些信息通常在应用的配置文件中定义,以便在程序运行时加载。 3. **MIME消息**: ...

    javamail 邮件系统

    JavaMail邮件系统是一种基于Java平台的邮件发送和接收解决方案,它允许开发者通过编程方式与SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)等邮件服务器进行交互。在JavaMail中,...

    使用JavaMail发送复杂邮件源代码

    利用JavaMail进行邮件开发的发邮件的源代码,其中有四个例子,demo1/demo2是发送简单的邮件,demo3是发送一封html格式(正文为html格式,html代码中有一张图片)带附件的邮件。demo4是对demo3的补充,解决了附件的...

    JavaMail 发送邮件

    - **邮件被当作垃圾邮件**:确保发件人邮箱是合法的,避免发送垃圾内容,或者添加 SPF 和 DKIM 认证。 - **连接问题**:检查网络连接,确保 SMTP 服务器地址和端口正确。 - **认证失败**:确认用户名和密码是否...

    javamail收发邮件(带附件,正文带图).docx

    - **邮件编码**:邮件内容和附件的编码方式需要正确处理,避免乱码问题。 - **测试**:在正式使用前,务必进行充分的测试,确保邮件能正常发送并被正确接收。 通过以上步骤,我们可以利用 JavaMail 库轻松地发送...

    JavaMail结合JSP实现中文邮件收发系统.rar

    在处理中文字符时,JavaMail API支持MIME(多用途互联网邮件扩展)编码,确保非ASCII字符(如中文)在传输过程中不会出现乱码问题。 JSP是Java的一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,实现...

    JavaMail开发原理简介PPT

    邮件开发过程中会遇到一些常见问题,比如中文附件的乱码问题、Tomcat中JavaMail的支持与冲突,以及如何实现有效的邮件群发。这些问题需要开发者深入理解邮件协议和JavaMail的使用方式来解决。 邮件服务的核心是邮件...

    javaMail.zip

    使用JavaMail发送邮件的一般步骤如下: 1. **初始化 Session**:首先,你需要创建一个 `Properties` 对象,并设置SMTP服务器的相关属性,如主机名(host)、端口号(port),如果是SSL或TLS安全连接,还需要开启...

    spring整合freemarker发送邮件例子

    7. **解决乱码问题**:邮件内容的编码是常见的乱码来源。在JavaMail中,可以使用 `MimeMessage` 的 `setEncoding` 方法设置邮件的字符集,确保内容正确显示。同时,对于非ASCII字符,如中文,也需要确保邮件头部(如...

    Javamail开发

    在实际开发中,还会遇到一些常见问题,如中文附件的乱码问题、Tomcat中JavaMail的兼容性和冲突问题,以及如何高效地实现邮件群发。 邮件开发涉及的基本概念包括邮件服务器和电子邮箱。邮件服务器扮演着类似现实生活...

    Java自带的Java-mail框架 163 邮件发送,支持多附件,没中文乱码

    在本案例中,我们将关注如何使用JavaMail发送带有多个附件且不出现中文乱码的邮件,特别是通过163邮箱服务提供商。 1. **JavaMail API基础**: JavaMail API提供了一系列的类和接口,如`Session`,`Message`,`...

    简单的javamail例子 (源码)

    - **邮件发送逻辑**:使用 JavaMail API 发送邮件。 ```java // 设置邮件服务器属性 Properties props = new Properties(); props.put("mail.smtp.host", "smtp.21cn.com"); // 创建会话对象 Session ...

    传智播客张孝祥Java邮件开发学习笔记

    5. 编写JavaMail发送邮件的程序 使用JavaMail API编写一个简单的邮件发送程序,需要利用JavaMail提供的类和接口。实现邮件发送功能需要设置邮件服务器的SMTP属性,编写发送邮件的代码,以及使用Authenticator类来...

Global site tag (gtag.js) - Google Analytics