`
BestUpon
  • 浏览: 291479 次
  • 性别: Icon_minigender_1
  • 来自: 兰州
社区版块
存档分类
最新评论

JavaMail、Commons Email发送邮件 出现结果后到的文件是Base64的问题的解决办法

    博客分类:
  • J2EE
阅读更多

今天折腾了一天,有个业务需要写个简单的邮件发送,但是测试了。从Apache Commons Email 上取得的例子,稍作了修改:

public class SendMail {
	public static void main(String[] args) throws Exception {

		HtmlEmail email = new HtmlEmail();
		email.setCharset("UTF-8");
		email.setHostName("smtp.163.com");
		email.addTo("bestupon@foxmail.com", "BestUpon");
		email.setFrom("guzhuyunfan@163.com", "蒋绪升");
		email.setSubject("这是一个主题");
		email.setAuthentication("username", "password");
		email.setMsg("这是一个消息...........");
		URL url = new URL("http://www.apache.org/images/asf_logo_wide.gif");
		String cid = email.embed(url, "Apache logo");
		email.setHtmlMsg("<html>测试十四和<img src=\"cid:" + cid + "\"></html>");
		email.setTextMsg("Your email client does not support HTML messages 这是一个TEXTMEG");
		email.send();
		System.out.println("发送成功!");

	}
}

 这个测试例子,但是使用以上的代码发送邮件,应该的到,也得到了如下的结果:

 

 

但是当我将其放置到Web工程中的时候:

package com.jxs.sys.core.global.mail.service.impl;

import java.net.MalformedURLException;
import java.net.URL;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.springframework.stereotype.Service;

import com.jxs.sys.core.base.manager.ManagerSupport;
import com.jxs.sys.core.global.config.utils.PropertyHolder;
import com.jxs.sys.core.global.mail.dao.MailDao;
import com.jxs.sys.core.global.mail.model.Mail;
import com.jxs.sys.core.global.mail.service.MailManager;

@Service("sendMailManager")
public class MailManagerImpl extends ManagerSupport<Mail, MailDao> implements MailManager {

	public void sendMail(Mail mailMessage) {
		try {
			/*Email msg = null;
			msg = buildMessage(mailMessage);
			String msgto = mailMessage.getTo();
			if (StringUtils.isNotEmpty(msgto)) {
				String msgtos[] = msgto.split(";");
				for (String msto : msgtos) {
					String to[] = msto.split(",");
					if (to.length == 2) {
						msg.addTo(to[1], to[0]);
						msg.send();
					}
				}
			}*/
			HtmlEmail email = new HtmlEmail();
			email.setCharset("UTF-8");
			email.setHostName("smtp.163.com");
			email.addTo("bestupon@foxmail.com", "BestUpon");
			email.setFrom("guzhuyunfan@163.com", "蒋绪升");
			email.setSubject("这是一个测试主题");
			email.setAuthentication("username", "password");
			email.setMsg("这是一个消息...........");
			URL url = new URL("http://www.apache.org/images/asf_logo_wide.gif");
			String cid = email.embed(url, "Apache logo");
			email.setHtmlMsg("<html>测试十测试内容四和<img src=\"cid:" + cid + "\"></html>");
			email.setTextMsg("Your email client does not support HTML messages 这是一个TEXTMEG");
			email.send();
			System.out.println("发送成功!");
		} catch (EmailException e) {
			this.log.info("消息发送失败! 原因: " + e.getMessage());
		} catch (MalformedURLException e) {
			this.log.info("消息发送失败! 原因: " + e.getMessage());
		}
	}

	private Email buildMessage(Mail mailMessage) throws EmailException, MalformedURLException {
		HtmlEmail email = new HtmlEmail();
		email.setCharset("UTF-8");
		email.setHostName(PropertyHolder.getProperty("mail.host"));// 主机

		String from[] = mailMessage.getFrom().split(",");
		email.setFrom(from[1], from[0]);
		email.setSubject(mailMessage.getSubject());

		email.setAuthentication(PropertyHolder.getProperty("mail.username"), PropertyHolder.getProperty("mail.password"));
		email.setHtmlMsg("<html>" + mailMessage.getContent() + "</html>");
		return email;
	}
}
 

利用Action调用的时候,会出现如下的结果:

------=_Part_0_12512205.1282227745012
Content-Type: multipart/related; boundary="----=_Part_1_7008653.1282227745012"

------=_Part_1_7008653.1282227745012
Content-Type: multipart/alternative; boundary="----=_Part_2_18379432.1282227745012"

------=_Part_2_18379432.1282227745012
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Your email client does not support HTML messages =E8=BF=99=E6=98=AF=E4=B8=80=
=E4=B8=AATEXTMEG
------=_Part_2_18379432.1282227745012
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<html>=E6=B5=8B=E8=AF=95=E5=8D=81=E5=9B=9B=E5=92=8C<img src=3D"cid:hiuudkwrl=
s"></html>
------=_Part_2_18379432.1282227745012--

 这样的结果,测试后了好几次,还是没有解决问题。

 

1.前面按照是过滤器的思路解决,去掉了所有的过滤器,行不通。

2.想着是不是本工程的编码问题,写了一个编码过滤器,行不通,

3.后来就直接新建了一个工程,使用一个Servlet来发送邮件,结果是成功了。

4.将前面的工程代码全部拷贝到上面的工程中,有行不通了.

5.这样猜想问题是出现在了jar包上了,是不是JavaMail的包和Commons Email的包有冲突,去掉了JavaMail的包还是行不通,

6.顺着5的这个思路,将原来所有的jar包都拷贝到这个工程中,不加载其他的任何信息,清理了一遍所有的JAR包,将以下的包,能发送成功了。

问题出现在了geronimo-javamail_1.4_spec-1.3 和 javamail 有冲突,geronimo-javamail_1.4_spec-1.3这个是使用CXF的时候引进的无用包!结果很让人郁闷,花费了我一天的时间!,写下来,警戒切勿引用无用包!

 

 

 

  • 大小: 19.2 KB
  • 大小: 8.5 KB
分享到:
评论
3 楼 qianlei007 2011-04-08  
我和一 犯的一样的错。  帮我的忙了。。。
     找了一天, 最终 被你解决了。。。

     谢谢哟!
2 楼 BestUpon 2010-08-26  
bitray 写道
我使用javamail发送邮件没遇到什么困难

但是利用javamail接收邮件,非常费事,总是出现不支持SSLV3的异常,能不能请教请教你

我没有遇到过这个问题,我猜测,只是猜测:你使用的v3协议,在javaMail 1.4 jar 中还不支持!或者是其他邮件服务器发送的邮件协议是最新版本的,你这边采用的协议两个不兼容!
在这个地址:http://www.5dmail.net/html/2006-6-20/2006620160939.htm
和http://www.blogjava.net/zamber/archive/2006/08/30/66544.html 相关内容!希望对你有所帮助!
1 楼 bitray 2010-08-26  
我使用javamail发送邮件没遇到什么困难

但是利用javamail接收邮件,非常费事,总是出现不支持SSLV3的异常,能不能请教请教你

相关推荐

    javamail&commons-email

    JavaMail和Apache Commons Email是两个在Java环境中广泛使用的库,用于发送电子邮件。这两个库提供了丰富的功能,使得开发者能够轻松地实现复杂邮件的发送,包括文本邮件、HTML邮件、附件、多部分消息等。 JavaMail...

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

    在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...

    commons-email发送邮件

    Apache Commons Email 是一个Java库,专门用于简化电子邮件的发送。这个库是Apache Commons项目的一部分,提供了许多方便的API,使得开发者能够轻松地构建并发送包含文本、HTML内容以及附件的邮件。下面我们将深入...

    使用javamail,commons-mail发送邮件实例

    `javamail`是一个强大的Java API,用于处理邮件服务器交互,而`commons-mail`是Apache Commons项目的一部分,提供了一个更简单的接口来发送邮件。 首先,我们需要了解`javamail`的核心概念。它主要涉及`Session`、`...

    邮件发送--commons-email-1.4.jar

    在Java编程环境中,发送电子邮件是一项常见的任务,而`commons-email-1.4.jar`是Apache Commons Email库的一个版本,这个库专门设计用于简化Java中的邮件发送。Apache Commons Email是Apache软件基金会开发的一个...

    关于用javamail发送邮件时,由于邮件服务器要SSL,解决办法

    本文将深入探讨如何解决这一问题,主要基于提供的文件`SendMail.java`,它很可能是用于实现邮件发送功能的代码。 首先,让我们理解SSL/TLS的作用。SSL和TLS是网络安全协议,它们为网络通信提供加密处理,确保数据在...

    Commons: 封装Apache Commons Email简化邮件发送

    Apache Commons Email是Java开发中一个非常实用的工具库,它为简化邮件发送提供了丰富的功能。这个库封装了JavaMail API,使得开发者可以更加方便、高效地处理电子邮件的发送任务,而无需深入理解复杂的邮件协议和...

    javaMail 用三种方式实现发送附件

    javaMail 用附件路径,文件流 byte[] 或 base64 字符串 实现发送附件功能

    javamail发送邮件.zip

    JavaMail 是一个强大的开源...综上所述,这个项目涵盖了从客户端文件上传到服务器,再到使用JavaMail API构造和发送复杂邮件的完整流程。通过解压和研究提供的代码,开发者可以学习到如何在实际项目中实现类似的功能。

    Java Mail和Commons-email发简单的邮件所用到的jar包

    集成这些jar包后,开发者可以按照以下步骤使用JavaMail和Commons Email发送邮件: 1. 添加依赖:将上述jar包放入项目的类路径或构建工具的依赖管理中。 2. 创建Session:配置邮件服务器的相关参数,如主机名、端口...

    使用JAVAMail代发邮件

    在设置好 MailInfo 对象后,我们可以使用 JavaMail 库来发送邮件。我们可以使用 Transport 对象来发送邮件, Transport 对象是 JavaMail 库中的一个核心对象,用于发送和接收电子邮件。我们可以使用 Transport 对象...

    javamail实现邮箱与邮箱发送邮件

    本示例将重点介绍如何使用JavaMail库来实现163邮箱向腾讯邮件发送邮件的流程。 首先,确保你的项目中已经包含了JavaMail所需的依赖。通常,这可以通过在Maven或Gradle的构建文件中添加对应的依赖完成。例如,如果你...

    JavaMail发送邮件的例子

    JavaMail是一种在Java环境中发送和接收电子邮件的标准API,它提供了丰富的功能来处理复杂的邮件操作。在Struts2框架中集成JavaMail服务,可以方便地在Web应用中实现邮件的发送功能。下面我们将深入探讨JavaMail的...

    javamail 回执邮件资料

    除了 JavaMail API,还可以使用 Jakarta Commons Email 这个库,它提供了更简洁的接口,简化了邮件的发送过程。例如,使用 Commons Email 发送带附件的邮件: ```java SimpleEmail email = new SimpleEmail(); ...

    mail.jar、commons-email-1.2.jar 、activation.jar下载

    在测试完成后,使用Ant脚本可以将JMeter生成的测试结果报告打包,并通过JavaMail和Apache Commons Email库发送到指定的收件人,这样团队成员就能及时了解测试状况。 5. **其他文件**: - `mail-1.5.0-b01.jar`:这...

    javamail发送、接收邮件

    通过解析给定文件的标题、描述、标签及部分内容,我们可以深入探讨javamail发送与接收邮件的详细教程,以及如何利用JavaMail API实现邮件功能。 ### javamail发送、接收邮件 JavaMail API是由Sun Microsystems开发...

    如何用javamail定时发送邮件.doc

    另外,确保处理异常情况,提供适当的错误处理和通知机制,以便在邮件发送失败时能够及时发现并解决问题。记得在完成后打包所有依赖到一个JAR文件,例如`schedule.jar`,并确保包含所有必要的库和配置文件。

    JavaMail发送邮件(文本、html、附件)

    JavaMail是一种广泛使用的Java库,用于在应用程序中发送电子邮件。这个标题"JavaMail发送邮件(文本、html、附件)"涵盖了使用JavaMail API发送不同格式邮件的核心功能。下面将详细介绍如何利用JavaMail发送文本、...

    用javaMail发送邮件

    JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个功能通常涉及到SMTP(简单邮件传输协议)和其他相关的互联网邮件协议。在JavaMail中,`mail.jar` 和 `activation.jar` 是两个关键的库...

    常规JavaMail 邮件发送实用类

    在Java编程领域,JavaMail API是一个非常重要的工具,它允许开发者通过编程方式发送电子邮件。"常规JavaMail 邮件发送实用类"标题所指的,通常是一个自定义的Java类,封装了JavaMail API的基本操作,使得邮件发送变...

Global site tag (gtag.js) - Google Analytics