【发布时间】:2018-06-30 00:32:48
【问题描述】:
当我尝试使用 java 从我的个人电子邮件(如 (sp@gmail.com))发送邮件时,它已成功发送。
但是当我使用我的公司电子邮件 (sp@example.com) 时,它会抛出 Authentication failed exception。我正在使用 TLS 身份验证,它已成功连接到主机。
当我手动登录我的电子邮件时,它总是会要求 两步 验证。即使我禁用了两步验证并进行了更改以降低安全性,它仍然会要求进行两步验证,因为它在输入我的用户名和密码后会显示此消息:
2-Step Verification
Based on your organization's policy, you need to turn on 2-step verification. Contact your administrator to learn more.
Enter one of your 8-digit backup codes
在这种情况下我该怎么办?因为这是我在这家公司的第一个任务,如果你能帮助我,我会很高兴。我该如何解决这个问题?
我的代码:
String to = "abc@example.com";
String user = "sp@example.com";
String pass = "1234";
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.example.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
Session session = Session.getInstance(props,new javax.mail.Authenticator()
{
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(user,pass);
}
});
session.setDebug(true);
try
{
/* Create an instance of MimeMessage,
it accept MIME types and headers
*/
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(user));
message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
message.setSubject(sub);
message.setText(msg);
/* Transport class is used to deliver the message to the recipients */
Transport.send(message);
}
catch(Exception e)
{
e.printStackTrace();
}
错误信息:
535 5.7.3 Authentication unsuccessful javax.mail.AuthenticationFailedException at javax.mail.Service.connect(Service.java:319) at javax.mail.Service.connect(Service.java:169) at javax.mail.Service.connect(Service.java:118) at javax.mail.Transport.send0(Transport.java:188) at javax.mail.Transport.send(Transport.java:118) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)
SMTP 配置:
configuration:props.put("mail.smtp.host", "smtp.oceaneering.com"); props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
【问题讨论】:
-
你好像没有粘贴代码。
-
嗨,谢尔盖,我已经粘贴了代码。你能建议我该怎么做吗,我收到身份验证失败异常:
-
535 5.7.3 身份验证不成功 javax.mail.Service.connect(Service.java:319) at javax.mail.Service.connect(Service.java:169) at javax.mail.AuthenticationFailedException javax.mail.Service.connect(Service.java:118) 在 javax.mail.Transport.send0(Transport.java:188) 在 javax.mail.Transport.send(Transport.java:118) java.util.concurrent。 ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)
-
服务商是什么?
-
我正在使用带有这些配置的 SMTP:props.put("mail.smtp.host", "smtp.oceaneering.com"); props.put("mail.smtp.port", "587"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true");
标签: java jakarta-mail