![](/img/trans.png)
[英]Java Mail Api throws MessagingException: Exception reading response
[英]“Exception reading response” error trying to send mail in java
這是一個從java發送電子郵件的小代碼。
public static void sendMail(){
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", "mail.domain.tld");
props.put("mail.smtp.debug", "true");
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("sender@domain.tdl", "pwd");
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("sender@domain.tdl"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("receiver@yahoo.fr"));
message.setSubject("Testing Subject");
message.setContent("This is a test <b>HOWTO<b>", "text/html; charset=ISO-8859-1");
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
但是運行它我有這個錯誤
Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Exception reading response;
nested exception is:
java.net.SocketException: Software caused connection abort: recv failed
at Test.main(Test.java:112)
Caused by: javax.mail.MessagingException: Exception reading response;
nested exception is:
java.net.SocketException: Software caused connection abort: recv failed
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2445)
at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:2307)
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2340)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1808)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1285)
at javax.mail.Transport.send0(Transport.java:255)
at javax.mail.Transport.send(Transport.java:124)
at Test.main(Test.java:107)
Caused by: java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:126)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:104)
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2425)
... 7 more
我不明白錯誤的原因,因為這段代碼過去對我有用。 這是我正在使用的罐子:
@Bill 要求修改后,這是我的新錯誤
Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: mail.hereka.org, port: 25;
nested exception is:
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at Test.main(Test.java:134)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: mail.hereka.org, port: 25;
nested exception is:
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2196)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:726)
at javax.mail.Service.connect(Service.java:366)
at javax.mail.Service.connect(Service.java:246)
at javax.mail.Service.connect(Service.java:267)
at javax.mail.Transport.send0(Transport.java:252)
at javax.mail.Transport.send(Transport.java:174)
at Test.main(Test.java:130)
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:671)
at sun.security.ssl.InputRecord.read(InputRecord.java:504)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:619)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:393)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2160)
... 7 more
但是如果我刪除了 ssl 屬性,這是新的錯誤
Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Exception reading response;
nested exception is:
java.net.SocketException: Software caused connection abort: recv failed
at Test.main(Test.java:134)
Caused by: javax.mail.MessagingException: Exception reading response;
nested exception is:
java.net.SocketException: Software caused connection abort: recv failed
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2445)
at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:2307)
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2340)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1808)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1285)
at javax.mail.Transport.send0(Transport.java:255)
at javax.mail.Transport.send(Transport.java:174)
at Test.main(Test.java:130)
Caused by: java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:126)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:104)
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2425)
... 7 more
謝謝
這與 jar 無關,而是與 SMTP 服務器錯誤有關。 你可以嘗試使用
telnet mail.domain.tld
並嘗試連接到主機。 我建議你包括一個端口
props.put("mail.smtp.port", "portnumber");
您可以嘗試使用標准端口 25(不安全)或 587(安全)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.