在我的应用中,用户在首次启动后立即将他们的Google帐户与我的应用相关联,因此我想发送他们"欢迎邮件"。此外,当我需要向他们发送一些东西时还有另一种情况。但由于我不想使用某些网络服务,我只想直接从应用程序发送这些消息。
所以我一直在搜索互联网,我发现了这一点:https://cloud.google.com/appengine/docs/java/mail/#Java_Sending_mail_with_the_JavaMail_API Basicaly,它是Google App Engine的一部分,但对于邮件,他们使用的是JavaMail API。所以我从这里下载了javax.mail库:https://java.net/projects/javamail/pages/Home#Download_JavaMail_1.5.2_Release 并且我已将其添加到我的Android应用中。
然后,我尝试使用Google App Engine文档中的代码:
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
// ...
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
String msgBody = "...";
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("admin@example.com", "Example.com Admin"));
msg.addRecipient(Message.RecipientType.TO,
new InternetAddress("user@example.com", "Mr. User"));
msg.setSubject("Your Example.com account has been activated");
msg.setText(msgBody);
Transport.send(msg);
} catch (AddressException e) {
// ...
} catch (MessagingException e) {
// ...
}
但那扔掉了java.lang.NoClassDefFoundError: javax.activation.DataHandler
我发现我还需要从JavaBeans Activation Framework添加javax.activation.jar
,所以我已经这样做了,但是这并没有改变这个错误。这很有趣,因为当我输入javax.activation.DataHandler();
时,它就找到了它。
后来,我还发现我需要第三个库 - additional.jar,所以我也添加了这个......但是,它仍然会抛出java.lang.NoClassDefFoundError: javax.activation.DataHandler
。在这一点上,我不知道问题是什么......