Java Mail无法发送电子邮件

贝扎迪·巴巴克(Behzadi Babak)

我正在使用javax.mail-api 1.5.3发送电子邮件。这是我的电子邮件发送代码:

    Properties properties = System.getProperties();
    properties.setProperty("mail.smtp.host", host);
    properties.setProperty("mail.smtp.port", port);
    properties.setProperty("mail.user", user);
    properties.setProperty("mail.password", password);
    properties.setProperty("mail.debug", "true");
    Session mailSession = Session.getDefaultInstance(properties);
    MimeMessage mimeMessage = new MimeMessage(mailSession);
    mimeMessage.setHeader("Content-Type", "text/html; charset=UTF-8");
    mimeMessage.setFrom(new InternetAddress(from));
    mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
    mimeMessage.setSubject(subject, "UTF-8");
    mimeMessage.setContent(body, "text/html; charset=UTF-8");
    Transport.send(mimeMessage);

但是此代码会导致以下错误。

调试输出:

DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host "my.smtp.host", port 25, isSSL false
220 <mail.mysite.com> <mysite>
DEBUG SMTP: connected to host "my.smtp.host", port: 25

EHLO my-pc
250-mail.mysite.com Hello [192.168.120.120]
250-SIZE
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-AUTH LOGIN
250-8BITMIME
250-BINARYMIME
250 CHUNKING
DEBUG SMTP: Found extension "SIZE", arg ""
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "DSN", arg ""
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "BINARYMIME", arg ""
DEBUG SMTP: Found extension "CHUNKING", arg ""
DEBUG SMTP: use8bit false
MAIL FROM:<[email protected]>
250 2.1.0 Sender OK
RCPT TO:<[email protected]>
550 5.7.1 Unable to relay
DEBUG SMTP: Invalid Addresses
DEBUG SMTP:   [email protected]
DEBUG SMTP: Sending failed because of invalid destination addresses
RSET
250 2.0.0 Resetting
DEBUG SMTP: MessagingException while sending, THROW: 
javax.mail.SendFailedException: Invalid Addresses;
  nested exception is:
    com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 Unable to relay

    at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1950)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1195)
    at javax.mail.Transport.send0(Transport.java:254)
    at javax.mail.Transport.send(Transport.java:124)
    at org.bob.resume.service.MailService.send(MailService.java:80)
    at org.bob.resume.service.MailService.send(MailService.java:89)
    at org.bob.resume.service.MailService.send(MailService.java:95)
    at org.bob.resume.controller.AdminController.submitPersonUser(AdminController.java:267)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.bob.resume.config.BobDispatcherServletInitializer$1.doFilterInternal(BobDispatcherServletInitializer.java:126)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:619)
Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 Unable to relay

    at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1803)
    ... 49 more
QUIT
221 Closing connection. Good bye.

这是一个奇怪的日志,目标电子邮件是有效的,但是此日志显示目标地址无效!!!

DEBUG SMTP: Sending failed because of invalid destination addresses

注意:针对此问题,所有电子邮件和ip均已有意更改,并且它们是正确的。

预先感谢您的关注。

一月
 550 5.7.1 Unable to relay

这说:地址很好,但是不允许将MAIL FROM:您提供的电子邮件发送RCPT TO:SMTP命令中指定电子邮件

SMTP服务器很可能希望您在发送电子邮件之前登录(使用SMTP AUTH)。

为此,您可以尝试以下操作:

Transport.send(mimeMessage, username, password);

或者,如果那失败,则设置正确的SMTP AUTH:

props.put("mail.smtp.auth", "true");
Session mailSession = Session.getDefaultInstance(properties, new Authenticator() {
    public PasswordAuthentication getPasswordAuthentication() {
       //Fill in your data here.
       return new PasswordAuthentication("user", "password");
    }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我无法使用Java Mail API发送电子邮件,但电子邮件已发送但未收到或未显示在已发送的电子邮件中

来自分类Dev

Java Mail API未发送电子邮件

来自分类Dev

Java Mail API未发送电子邮件

来自分类Dev

尝试发送电子邮件,出现错误,提示“此导入java.mail”无法解决

来自分类Dev

尝试发送电子邮件,出现错误,提示“此导入java.mail”无法解决

来自分类Dev

无法使用Java通过Gmail发送电子邮件

来自分类Dev

通过Java发送电子邮件-javax.mail.MessagingException:无法连接到SMTP主机:localhost,端口:587;

来自分类Dev

从Java发送电子邮件

来自分类Dev

在Android中使用Java Mail API向带有附件的电子邮件发送电子邮件

来自分类Dev

Java Mail API:通过公司外景帐户发送电子邮件

来自分类Dev

使用Java Mail API通过Struts发送电子邮件

来自分类Dev

使用Java Mail API通过Struts发送电子邮件

来自分类Dev

通过Java Mail API发送电子邮件时出错?

来自分类Dev

使用Java Mail-api发送电子邮件失败

来自分类Dev

切换计算机时无法使用Java发送电子邮件吗?

来自分类Dev

运行远程服务器时无法使用Java代码发送电子邮件

来自分类Dev

无法从Java Web应用程序发送电子邮件

来自分类Dev

使用Postfix通过Java发送电子邮件

来自分类Dev

Java通过gmail发送电子邮件

来自分类Dev

使用Java批注通过Spring发送电子邮件

来自分类Dev

发送电子邮件Java时的异常

来自分类Dev

如何使用Java发送电子邮件?

来自分类Dev

使用数据库以Java发送电子邮件

来自分类Dev

Java通过雅虎发送电子邮件

来自分类Dev

在Java中使用Gmail API发送电子邮件

来自分类Dev

使用java spring和GMail发送电子邮件

来自分类Dev

如何在 Java 中发送电子邮件?

来自分类Dev

如何从 Xpages 用 Java 发送电子邮件?

来自分类Dev

通过Java发送电子邮件时,无法连接到SMTP主机:10.0.1.9,端口:80,响应:-1

Related 相关文章

  1. 1

    我无法使用Java Mail API发送电子邮件,但电子邮件已发送但未收到或未显示在已发送的电子邮件中

  2. 2

    Java Mail API未发送电子邮件

  3. 3

    Java Mail API未发送电子邮件

  4. 4

    尝试发送电子邮件,出现错误,提示“此导入java.mail”无法解决

  5. 5

    尝试发送电子邮件,出现错误,提示“此导入java.mail”无法解决

  6. 6

    无法使用Java通过Gmail发送电子邮件

  7. 7

    通过Java发送电子邮件-javax.mail.MessagingException:无法连接到SMTP主机:localhost,端口:587;

  8. 8

    从Java发送电子邮件

  9. 9

    在Android中使用Java Mail API向带有附件的电子邮件发送电子邮件

  10. 10

    Java Mail API:通过公司外景帐户发送电子邮件

  11. 11

    使用Java Mail API通过Struts发送电子邮件

  12. 12

    使用Java Mail API通过Struts发送电子邮件

  13. 13

    通过Java Mail API发送电子邮件时出错?

  14. 14

    使用Java Mail-api发送电子邮件失败

  15. 15

    切换计算机时无法使用Java发送电子邮件吗?

  16. 16

    运行远程服务器时无法使用Java代码发送电子邮件

  17. 17

    无法从Java Web应用程序发送电子邮件

  18. 18

    使用Postfix通过Java发送电子邮件

  19. 19

    Java通过gmail发送电子邮件

  20. 20

    使用Java批注通过Spring发送电子邮件

  21. 21

    发送电子邮件Java时的异常

  22. 22

    如何使用Java发送电子邮件?

  23. 23

    使用数据库以Java发送电子邮件

  24. 24

    Java通过雅虎发送电子邮件

  25. 25

    在Java中使用Gmail API发送电子邮件

  26. 26

    使用java spring和GMail发送电子邮件

  27. 27

    如何在 Java 中发送电子邮件?

  28. 28

    如何从 Xpages 用 Java 发送电子邮件?

  29. 29

    通过Java发送电子邮件时,无法连接到SMTP主机:10.0.1.9,端口:80,响应:-1

热门标签

归档