我正在开发一个应用程序,允许用户通过发送电子邮件与我联系(用户只输入消息,发件人和收件人的电子邮件都是我的)。我正在尝试使用 JavaMail API 通过 gmail 实现这一点。但是,我一直在线上收到此错误Transport.send(mimeMessage)。
以下是错误消息:
引起:java.lang.VerifyError:拒绝尝试对错误类 com.sun.mail.handlers.handler_base 进行子类型化的类 com.sun.mail.handlers.text_plain('com.sun.mail.handlers.text_plain 的声明' 出现在 /data/app/~~T_TRkO9R_v9j4iEdr4K9Yg==/com.example.compusec-dPeAL8DtGJvU45dJpt8xxA==/base.apk)
引起:java.lang.VerifyError:验证器拒绝类 com.sun.mail.handlers.handler_base:java.awt.datatransfer.DataFlavor[] com.sun.mail.handlers.handler_base.getTransferDataFlavors() 未能验证:java。 awt.datatransfer.DataFlavor[] com.sun.mail.handlers.handler_base.getTransferDataFlavors(): [0x4] 无法解析返回的类型 'Unresolved Reference: java.awt.datatransfer.DataFlavor[]' 或 'Reference: javax. activation.ActivationDataFlavor[]'('com.sun.mail.handlers.handler_base' 的声明出现在 /data/app/~~T_TRkO9R_v9j4iEdr4K9Yg==/com.example.compusec-dPeAL8DtGJvU45dJpt8xxA==/base.apk)
这是我的代码:
protected Void doInBackground(Void... voids) {
Properties properties = new Properties();
properties.put("mail.smtp.host", "smtp.gmail.com");
properties.put("mail.smtp.socketFactory.port", "465");
properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.port", "465");
session = javax.mail.Session.getInstance(properties, new javax.mail.Authenticator(){
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication("sender@gmail.com","senderpass");
}
});
session.setDebug(true);
MimeMessage mimeMessage = new MimeMessage(session);
try {
mimeMessage.setFrom(new InternetAddress("sender@gmail.com"));
mimeMessage.addRecipients(Message.RecipientType.TO, String.valueOf(new InternetAddress(email))); …Run Code Online (Sandbox Code Playgroud)