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

在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.<init>(MailcapFile.java:40)
 at javax.activation.MailcapCommandMap.loadFile(MailcapCommandMap.java:276)
 at javax.activation.MailcapCommandMap.<init>(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 文件:

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

mailcap 文件格式:

# 注释以 '#' 开头并延续到行的末尾。
<mime type>; ; <parameter list>
# 其中参数列表由一个或多个参数组成,
# 其中参数类似于: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

Leave a comment

Your comment