- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Gmail smtp 服务器从我的应用发送电子邮件。为此,我使用 javax 库。
MailSender.java
public class MailSender {
final String emailPort = "587";// gmail's smtp port for tls
final String smtpAuth = "true";
final String starttls = "true";
final String emailHost = "smtp.gmail.com";
String fromEmail;
String fromPassword;
String toEmail;
String emailSubject;
String emailBody;
Properties emailProperties;
Session mailSession;
MimeMessage emailMessage;
public MailSender() {
}
public MailSender(String fromEmail, String fromPassword, String toEmail, String emailSubject, String emailBody) {
this.fromEmail = fromEmail;
this.fromPassword = fromPassword;
this.toEmail = toEmail;
this.emailSubject = emailSubject;
this.emailBody = emailBody;
emailProperties = System.getProperties();
emailProperties.put("mail.smtp.port", emailPort);
emailProperties.put("mail.smtp.auth", smtpAuth);
emailProperties.put("mail.smtp.starttls.enable", starttls);
Log.i("MAIL_SENDER", "Mail server properties set.");
}
public MimeMessage createEmailMessage() throws AddressException, MessagingException, UnsupportedEncodingException {
mailSession = Session.getInstance(emailProperties, new javax.mail.Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(fromEmail, fromPassword);
}
});
emailMessage = new MimeMessage(mailSession);
emailMessage.setFrom(new InternetAddress(fromEmail, fromEmail));
emailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
emailMessage.setSubject(emailSubject);
//emailMessage.setContent(emailBody, "text/html");// for a html email
emailMessage.setText(emailBody);// for a text email
Log.i("MAIL_SENDER", "Email Message created.");
return emailMessage;
}
public void sendMail() throws AddressException, MessagingException {
Transport transport = mailSession.getTransport("smtp");
transport.connect(emailHost, fromEmail, fromPassword);
transport.sendMessage(emailMessage, emailMessage.getAllRecipients());
transport.close();
Log.i("MAIL_SENDER", "Email sent successfully.");
}
}
这是我从 Activity/服务发送电子邮件的方式:
private void sendEmail(String email) throws Exception{
String from = "myemail@gmail.com";
String pass = "mypass";
String to = email;
String subject = getString(R.string.email_subject);
String body = location_link;
sendMailTask task = new sendMailTask();
task.execute(from, pass, to, subject, body);
}
private class sendMailTask extends AsyncTask<Object, Object, Object> {
@Override
protected Object doInBackground(Object... args) {
try {
MailSender mail = new MailSender(args[0].toString(),
args[1].toString(), args[2].toString(), args[3].toString(),
args[4].toString());
mail.createEmailMessage();
mail.sendMail();
}catch (Exception e) {
Log.e("EMAIL", e.getMessage(), e);
}
return null;
}
}
但是每次调用 conect() 方法时,我都会在 LogCat 中收到此错误:
04-17 12:18:05.996: E/EMAIL(4160): javax.mail.AuthenticationFailedException
04-17 12:18:05.996: E/EMAIL(4160): at javax.mail.Service.connect(Service.java:319)
04-17 12:18:05.996: E/EMAIL(4160): at javax.mail.Service.connect(Service.java:169)
04-17 12:18:05.996: E/EMAIL(4160): at com.myapp.mail.MailSender.sendMail(MailSender.java:82)
04-17 12:18:05.996: E/EMAIL(4160): at com.myapp.TrackingService$sendMailTask.doInBackground(TrackingService.java:380)
04-17 12:18:05.996: E/EMAIL(4160): at android.os.AsyncTask$2.call(AsyncTask.java:288)
04-17 12:18:05.996: E/EMAIL(4160): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
04-17 12:18:05.996: E/EMAIL(4160): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
04-17 12:18:05.996: E/EMAIL(4160): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
04-17 12:18:05.996: E/EMAIL(4160): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
04-17 12:18:05.996: E/EMAIL(4160): at java.lang.Thread.run(Thread.java:841)
与认证有关。事实上,我的帐户中收到了一封来自 google 的电子邮件,告知有人试图访问我的帐户...
最佳答案
下面的代码对我来说工作得很好。为此,您需要从 http://code.google.com/p/javamail-android/downloads/list 下载库来自 https://commons.apache.org/proper/commons-email/download_email.cgi 的链接和公共(public)电子邮件关联。删除所有其他 java 邮件库,仅添加这四个库;
import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
private class MailClass extends AsyncTask<String, Void, Void>{
@Override
protected Void doInBackground(String... params) {
try {
Email email = new SimpleEmail();
email.setHostName("smtp.googlemail.com");
email.setSmtpPort(465);
email.setAuthenticator(new DefaultAuthenticator("abc@gmail.com", "abc_password"));
email.setSSLOnConnect(true);
email.setFrom("abc@gmail.com");
email.setSubject("TestMail");
email.setMsg("This is a test mail ... :-)");
email.addTo("dhavalpatel.244@gmail.com");
email.send();
} catch (EmailException e) {
e.printStackTrace();
}
return null;
}
}
关于Javax.mail.AuthenticationFailedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29696791/
我正在尝试使用 Gmail smtp 服务器从我的应用发送电子邮件。为此,我使用 javax 库。 MailSender.java public class MailSender { final St
对不起我的英语!当我尝试使用 Android 中的 JavaMail API 从我的 gmail 帐户发送电子邮件时出现错误。我收到此错误:AuthenticationFailedException。
我不熟悉这个在java中发送邮件的功能。我在注册后发送电子邮件以确认用户时遇到错误。 下面是 TextMail 中的代码: public class TextMail extends HttpServ
我编写了一个程序来使用 JavaMail 检查邮件。代码如下: private static Folder getFolder(String popHost, int openPort, MailAu
代码: package maintestcases; import org.testng.annotations.Test; import java.io.IOException; impor
我的目标是通过电子邮件发送数据帧。下面是我的一段代码: import javax.mail._ import javax.mail.internet._ import org.apache.spark
我正在尝试使用 java API 发送电子邮件,并且提供了正确的电子邮件 ID 和密码,但仍然收到 AuthenticationFailedException。 我还尝试提供 host=mail.sm
我正在使用下面的代码使用 Java mail 1.6.2 阅读 Outlook 电子邮件 Properties props = new Properties();
这是我的配置文件。同时,我还在接收方电子邮件中启用了“不太安全的应用程序是真实的”。我正在使用 587 smpt.gmail.com 端口,因为我仅使用 HTTP,而不是 HTTPS。在本地服务器中,
我已经看过这个问题的所有答案。但我的邮件没有发送。实际上,当我使谷歌安全性降低时它会发送。但对我来说这不是一个解决方案!因为它使 Gmail 帐户不 protected ,所以使用该应用程序的人也不想
我正在制作一个程序,将信息发送到我的电子邮件,并且我正在从给定的 java 代码中进行引用。但我收到身份验证失败错误。任何人都知道发送 SMTP 邮件而不会让 gmail 和 yahoo 的安全性降低
嗨,我已经编写了一个使用 java 邮件从我的服务器发送邮件的代码 这是我的代码 Properties pros = new Properties(); pros.put("mail.smtp.hos
谁能告诉我为什么应用会抛出这个? W/System.err: javax.mail.AuthenticationFailedException at javax.mail.Servic
我尝试使用以下代码发送邮件,但出现类似异常的情况。 javax.mail.AuthenticationFailedException at javax.mail.Service.connect
我做了一个小程序,可以将消息发送到我的电子邮件帐户。我的大部分代码似乎都可以正常工作。但是,当我的代码在我的程序中命中 transport.send 时,我遇到了 AuthenticationFail
我不熟悉这个在java中发送邮件的功能。我在发送电子邮件以重置密码时遇到错误。希望你能给我一个解决方案。 下面是我的代码: public synchronized static boolean sen
该程序尝试发送电子邮件,但引发运行时异常:AuthenticationFailedException 我已经提到了 stackoverflow 问题并回答了我已经实现的相同问题,但我仍然遇到这样的异常
虽然我使用了正确的凭据,但我无法使用 java 阅读电子邮件 我尝试过 pop3 和 IMAP。所有尝试过的 EmailId 均显示无效凭据 Session session = Session.get
我正在尝试在 NetBeans 中创建电子邮件客户端来发送电子邮件,但我的代码中收到 AuthenticationFailedException 。这是我的代码(共有三个类): EmailClient
我正在尝试使用 Java Mail API 通过 Exchange Server (Office 365) 发送邮件。以下是我的代码: package com.package; import java
我是一名优秀的程序员,十分优秀!