Java mail包出现"MimeMessage contains object of type javax.mail.util.SharedByteArrayInputStream instead of MimeMultipart"错误的修正办法
来源:互联网 发布:caffe cudnn 版本 编辑:程序博客网 时间:2024/06/02 07:19
这个问题曾出现于本人制作的java mail应用程序部署中。在IDE中未出现任何问题,只是在打包部署时(我是将java mail的所有class文件与我开发的程序一同打到jar中便于部署),一发mail就在Transport.send()时报此异常。
这个问题,直译的解释是,在发送邮件时,MimeMessage中包含的对象是javax.mail.util.SharedByteArrayInputStream,而不是MimeMultipart。但是就算收到的邮件原封不动地发出去,也还是会报同样的错,而且在IDE里面没问题,打成jar包运行就报错。于是便猜想,应该是环境问题。上网搜这个报错,国内的论坛、网站上,根本找不到对这一错误地解决办法描述,后来在一英文论坛上,发现了端倪。
原来,java mail这个工具包的那个jar,有很多引用到的文件,并没有放到class文件的文件夹下,而是放到了jar文件的META-INF文件夹下,其中就有很重要的mailcap文件。这个文件是用来parse MimeMessage用的,没有了这个文件,message就不会被parse成MimeMultipart,而是会直接以字节流的方式交给Transport类来发送。而Transport类不能发送字节流内容。
在我的这个case里面,由于我是把java mail的class文件直接加到我的jar包中,所以java mail的jar文件中的META-INF的内容就被丢弃了。解决方法很简单,转而将我自己写的程序的包、class文件打到java mail的jar里面,然后在MANIFEST.MF的第二行里面指明自己的主类就可以了。(加入Main-Class: XXXX.XXXX就可以了)
- Java mail包出现"MimeMessage contains object of type javax.mail.util.SharedByteArrayInputStream instead of MimeMultipart"错误的修正办法
- java.lang.ClassCastException: javax.mail.util.SharedByteArrayInputStream
- java.lang.ClassCastException: javax.mail.internet.MimeMultipart
- 错误:javax.activation.DataHandler and javax.mail.internet.MimeMultipart
- Java mail 发送 MimeMessage 邮件
- javamail的MimeMultipart和SharedByteArrayInputStream
- java mail 做邮件 错误javax/mail/MessagingException
- java-mail的错误
- javax.mail 处理邮件时由于content-type内容不合标准引起的错误
- java.lang.NoClassDefFoundError: com/sun/mail/util/MailLogger javax/mail/MessagingException
- java.lang.NoClassDefFoundError: com/sun/mail/util/MailLogger javax/mail/MessagingException
- java.lang.NoClassDefFoundError: com/sun/mail/util/MailLogger javax/mail/MessagingException
- javax.mail.NoSuchProviderException: smtp 错误
- the trouble of mail
- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart)
- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart)
- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart)
- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart)
- Java疑惑点解析(一)
- DataList控件里添加Button,运行点击出现“回发或回调参数无效”的解决办法
- 表达式 (MDX)
- 利用bochs调试linux 0.11内核
- 什么是回调函数(callback)(转载)
- Java mail包出现"MimeMessage contains object of type javax.mail.util.SharedByteArrayInputStream instead of MimeMultipart"错误的修正办法
- CMM,CMMI,PSP,TSP
- Linux那些事儿之我是U盘(13)从协议中来,到协议中去(下)
- 请慎用ASP.Net的validateRequest="false"
- 七宗罪与程序员
- .NET 常用快揭键小列
- java冒泡排序
- ASP.NET下如何防范SQL注入式攻击
- 实用开发一:c#封装好的处理图片的水印和生成缩略图的类