红联Linux门户
Linux帮助
当前位置: 红联Linux门户 > Ubuntu

ubuntu下使用javamail发送邮件的问题

发布时间:2008-01-09 01:13:22来源:红联作者:Whikla
在windows下正常运行,并能正确发送邮件的代码,移植到linux(ubuntu 7.1)下却出现了问题:

java.lang.NullPointerException
at java.lang.String.concat(String.java:1827)
at com.sun.activation.registries.MailcapFile.parseLine(MailcapFile.java:235)
at com.sun.activation.registries.MailcapFile.parse(MailcapFile.java:197)
at com.sun.activation.registries.MailcapFile.createMailcapHash(MailcapFile.java:157)
at com.sun.activation.registries.MailcapFile.(MailcapFile.java:40)
at javax.activation.MailcapCommandMap.loadFile(MailcapCommandMap.java:276)
at javax.activation.MailcapCommandMap.(MailcapCommandMap.java:128)
at javax.activation.CommandMap.getDefaultCommandMap(CommandMap.java:44)
at javax.activation.DataHandler.getCommandMap(DataHandler.java:136)
at javax.activation.DataHandler.getDataContentHandler(DataHandler.java:568)
at javax.activation.DataHandler.getContent(DataHandler.java:501)
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1253)
at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2012)
at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1980)
at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:381)
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:326)
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:322)
at com.nes.util.OneDoorMailSender$MailSender.run(OneDoorMailSender.java:310)
at java.lang.Thread.run(Thread.java:595)

经查看java doc(http://java.sun.com/products/javabeans/glasgow/javadocs/javax/activation/MailcapCommandMap.html)发现,在用户的根目录下有个隐藏的.mailcap文件:

-e
# Java Web Start
application/x-java-jnlp-file; /usr/local/java/jre/bin/javaws %s

原来最前面有个-e的东东,与java doc描述不符,注释掉这行,然后发送邮件成功。

附:

mailcap 文件搜索顺序:

MailcapCommandMap 在用户系统的各个位置查找 mailcap 文件条目。当发出请求以搜索 MailcapCommandMap 中的命令时,它以下面的顺序搜索 mailcap 文件:

以编程方式添加到 MailcapCommandMap 实例的条目。
用户主目录中的 .mailcap 文件。
/lib/mailcap 文件。
名为 META-INF/mailcap 的文件或资源。
名为 META-INF/mailcap.default 的文件或资源(通常只存在于 activation.jar 文件中)。
mailcap 文件格式:

# 注释以 '#' 开头并延续到行的末尾。
; ;
# 其中参数列表由一个或多个参数组成,
# 其中参数类似于:x-java-view=com.sun.TextViewer
# 参数列表类似于:
纯文本; ; x-java-view=com.sun.TextViewer; x-java-edit=com.sun.TextEdit
# 注意,不包含 'x-java' 参数的 mailcap 条目
# 和遵守 RFC 1524 的条目将被忽略:
image/gif; /usr/dt/bin/sdtimage %s
文章评论

共有 0 条评论