java 为什么 javamail 会因身份验证异常而失败?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/5288217/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Why does javamail fail with an authentication Exception?
提问by saravana
package com.bcs;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendMailTLS {
public static void main(String[] args) {
String host = "smtp.gmail.com";
int port = 587;
String username = "[email protected]";
String password = "bar";
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
Session session = Session.getInstance(props);
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(""));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(""));
message.setSubject("Testing Subject");
message.setText("Dear Mail Crawler," +
"\n\n No spam to my email, please!");
Transport transport = session.getTransport("smtp");
transport.connect(host, port, username, password);
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
I have given all the necessary inputs . But still it fails with
我已经提供了所有必要的投入。但它仍然失败
Exception in thread "main" java.lang.RuntimeException: javax.mail.AuthenticationFailedException: failed to connect, no password specified?
at com.bcs.SendMailTLS.main(SendMailTLS.java:43)
Caused by: javax.mail.AuthenticationFailedException: failed to connect, no password specified?
at javax.mail.Service.connect(Service.java:329)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at com.bcs.SendMailTLS.main(SendMailTLS.java:38)
I am new to java mail.Any help would be greatly appreciated.
我是 java 邮件的新手。任何帮助将不胜感激。
回答by Behrang Saeedzadeh
This might help: http://www.behrang.org/en/blog/2010/03/30/sending-email-from-grails-using-gmail/
这可能会有所帮助:http: //www.behrang.org/en/blog/2010/03/30/sending-email-from-grails-using-gmail/
I think you should set these properties:
我认为你应该设置这些属性:
'mail.smtp.auth': 'true',
'mail.smtp.socketFactory.port': '465',
'mail.smtp.socketFactory.class': 'javax.net.ssl.SSLSocketFactory',
'mail.smtp.socketFactory.fallback': 'false'
And the port is 465
.
端口是465
.