我试图安装自动发送图片的Android应用,而无需用户干预。
我正在使用javax.mail
jar(以及activation.jar
和additional.jar
)来执行此操作。
我正在做以下事情
Properties props = new Properties();
props.put("mail.smtp.auth", true);
props.put("mail.smtp.starttls.enable", true);
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.ssl.enable",true);
props.put("mail.smtp.port", "465");
Session session = Session.getInstance(props,new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USER,PASS);
}
});
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("*******@gmail.com"));
message.setSubject("Email Subject");
message.addRecipient(Message.RecipientType.TO,
new InternetAddress("******@gmail.com"));
MimeBodyPart messageBodyPart = new MimeBodyPart();
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent("<img src=\"image.gif\"/>","text/html");
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
FileDataSource source = new FileDataSource(new File(ruta));
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName("picture.gif");
messageBodyPart.setDisposition("inline");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport.send(message);
当我执行此代码时,出现以下错误
W / System.err(24907):javax.mail.MessagingException:发送消息时发生IOException;
W / System.err(24907):嵌套异常是:
W / System.err(24907):javax.activation.UnsupportedDataTypeException:没有MIME类型multipart / mixed的对象DCH;
W / System.err(24907):boundary =&#34; ---- = _ Part_0_1095625208.1397499270313&#34;
W / System.err(24907):at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1182)
W / System.err(24907):at javax.mail.Transport.send0(Transport.java:254)
W / System.err(24907):at javax.mail.Transport.send(Transport.java:124)
有关如何解决此问题的任何想法?
我正在使用Debian 64-bits
计算机和Eclipse Java EE IDE for Web Developers - Kepler
。如果解决方案需要......
答案 0 :(得分:1)
DCH
是数据内容处理程序。 MimeType
处理程序似乎配置不正确。
如果您可以下载并使用最新的1.5.*
版本的java mail api,则应该解决此错误。
否则,在代码中,您可以执行一些语句来设置MimeType
处理程序。
将以下代码段添加到您的邮件模块,并可用于邮件Session
。
MailcapCommandMap mailcapCommandMap = new MailcapCommandMap();
mailcapCommandMap.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed; x-java-fallback-entry=true");
CommandMap.setDefaultCommandMap(mailcapCommandMap);
您可以针对其他MimeTypes
mailcapCommandMap.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
mailcapCommandMap.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
mailcapCommandMap.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
mailcapCommandMap.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
参阅 :
除此方法外,请阅读此课程的完整文档。
答案 1 :(得分:0)
我的发布模式android应用程序也遇到了同样的问题,它在调试模式下可以正常工作。
在proguard文件中添加以下行将解决此问题:
-keep class com.sun.mail.handlers.**
-dontwarn com.sun.mail.handlers.handler_base