[英]I want to send Run time Notification through E-mail in my designed web application by using Executors Thread Pool
[英]Android crashes when I want to send an e-mail in my app
我有一个可以发送电子邮件的Android应用程序。 但是,当我要发送电子邮件时,我的程序完全崩溃,并且出现错误:
流程:com.example.jonas.shoppinglist,PID:16791 java.lang.RuntimeException:在java.util.concurrent上的android.os.AsyncTask $ 3.done(AsyncTask.java:300)上执行doInBackground()时发生错误。 android.os.AsyncTask上的FutureTask.finishCompletion(FutureTask.java:355)在java.util.concurrent.FutureTask.setException(FutureTask.java:222)在java.util.concurrent.FutureTask.run(FutureTask.java:242) Java上的$ SerialExecutor $ 1.run(AsyncTask.java:231)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587) .lang.Thread.run(Thread.java:818)造成原因:java.lang.NoClassDefFoundError:javax.mail.internet上的javax.activation.DataHandler。MimeMessage.setContent(MimeMessage.java:1508)在javax.mail.internet上.mimeBodyPart.setText(MimeBodyPart.java:1155)在javax.mail.internet.MimeMessage.setText(MimeMessage.java:1547)在javax.mail.internet.MimeMessage.setText(MimeMessage.java:1531)
现在,我显示电子邮件发送者的代码,问题所在的行是message.setText(“ the real text”);。
import android.util.Log;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.activation.*;
public class MailSender {
private String body;
public void send() {
// Recipient's email ID needs to be mentioned.
String to = "abcd@gmail.com";
// Sender's email ID needs to be mentioned
String from = "web@gmail.com";
// Assuming you are sending email from localhost
String host = "localhost";
// Get system properties
Properties properties = System.getProperties();
// Setup mail server
properties.setProperty("mail.smtp.host", host);
// Get the default Session object.
Session session = Session.getDefaultInstance(properties);
try {
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress(from));
// Set To: header field of the header.
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
// Set Subject: header field
message.setSubject("This is the Subject Line!");
// Now set the actual message
message.setText("This is actual message");
// Send message
Transport.send(message);
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
我已经做过一些研究,有人说这是个难题,但是我认为我都需要依赖。 这是我的gradle权限:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.google.android.gms:play-services-gcm:7.3.0'
compile 'javax.activation:activation:1.1'
compile 'javax.mail:mail:1.5.0-b01'
compile 'javax.activation:activation:1.1.1'
}
怎么了?
您使用的Java库(javax.mail:mail:1.5.0-b01)可能不适合Android。 有一个Javamail的Android版本: https : //code.google.com/p/javamail-android/您应该尝试一下。 不要指望每个可以在Java上运行的库都可以在Android上运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.