浏览 3835 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (9)
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-19
今天折腾了一天,有个业务需要写个简单的邮件发送,但是测试了。从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的时候引进的无用包!结果很让人郁闷,花费了我一天的时间!,写下来,警戒切勿引用无用包!
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-08-26
我使用javamail发送邮件没遇到什么困难
但是利用javamail接收邮件,非常费事,总是出现不支持SSLV3的异常,能不能请教请教你 |
|
返回顶楼 | |
发表时间: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 相关内容!希望对你有所帮助! |
|
返回顶楼 | |
发表时间:2011-04-08
我和一 犯的一样的错。 帮我的忙了。。。
找了一天, 最终 被你解决了。。。 谢谢哟! |
|
返回顶楼 | |