javax.mail.SendFailedException,无法获取本地主机名

标签 java tomcat jakarta-mail

    >>>>>Sending data QUIT<<<<<<
    javax.mail.SendFailedException: Send failure (javax.mail.MessagingException: Can't get local hostname.  Please correctly configure JDK/DNS or set mail.smtp.localhost)
        at javax.mail.Transport.send(Transport.java:163)
        at javax.mail.Transport.send(Transport.java:48)
        at pl.intibs.logic.tools.EmailSender.sendEmail(EmailSender.java:56)
        at pl.intibs.paad.components.SampleMeasurementComponent.buttonClick(SampleMeasurementComponent.java:293)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:508)
        at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:198)
        at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:161)
        at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:977)
        at com.vaadin.ui.Button.fireClick(Button.java:393)
        at com.vaadin.ui.Button$1.click(Button.java:61)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:168)
        at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:118)
        at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:291)
        at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:184)
        at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:92)
        at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41)
        at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1408)
        at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:350)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        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:504)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
    Caused by: javax.mail.MessagingException: Can't get local hostname.  Please correctly configure JDK/DNS or set mail.smtp.localhost
        at org.apache.geronimo.javamail.transport.smtp.SMTPTransport.getLocalHost(SMTPTransport.java:1942)
        at org.apache.geronimo.javamail.transport.smtp.SMTPTransport.sendEhlo(SMTPTransport.java:1870)
        at org.apache.geronimo.javamail.transport.smtp.SMTPTransport.sendHandshake(SMTPTransport.java:1828)
        at org.apache.geronimo.javamail.transport.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:393)
        at javax.mail.Service.connect(Service.java:242)
        at javax.mail.Service.connect(Service.java:85)
        at javax.mail.Service.connect(Service.java:70)
        at javax.mail.Transport.send(Transport.java:94)
        ... 46 more
    >>>>>Sending data QUIT<<<<<<
    javax.mail.SendFailedException: Send failure (javax.mail.MessagingException: Can't get local hostname.  Please correctly configure JDK/DNS or set mail.smtp.localhost)
        at javax.mail.Transport.send(Transport.java:163)
        at javax.mail.Transport.send(Transport.java:48)
        at pl.intibs.logic.tools.EmailSender.sendEmail(EmailSender.java:56)
        at pl.intibs.paad.components.SampleMeasurementComponent.buttonClick(SampleMeasurementComponent.java:293)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:508)
        at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:198)
        at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:161)
        at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:977)
        at com.vaadin.ui.Button.fireClick(Button.java:393)
        at com.vaadin.ui.Button$1.click(Button.java:61)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:168)
        at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:118)
        at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:291)
        at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:184)
        at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:92)
        at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41)
        at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1408)
        at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:350)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        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:504)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
    Caused by: javax.mail.MessagingException: Can't get local hostname.  Please correctly configure JDK/DNS or set mail.smtp.localhost
        at org.apache.geronimo.javamail.transport.smtp.SMTPTransport.getLocalHost(SMTPTransport.java:1942)
        at org.apache.geronimo.javamail.transport.smtp.SMTPTransport.sendEhlo(SMTPTransport.java:1870)
        at org.apache.geronimo.javamail.transport.smtp.SMTPTransport.sendHandshake(SMTPTransport.java:1828)
        at org.apache.geronimo.javamail.transport.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:393)
        at javax.mail.Service.connect(Service.java:242)
        at javax.mail.Service.connect(Service.java:85)
        at javax.mail.Service.connect(Service.java:70)
        at javax.mail.Transport.send(Transport.java:94)
        ... 46 more

    public class EmailSender {
static String from = "account@int.pan.wroc.pl"; 
        private static String footer = "\n\n________________________________________________________\nJest to automatyczna wiadomość, proszę nie odpowiadać."+
                                       "\nThis is an automated message, please do not reply."; //stopka dodawana do każdego maila

        public static void sendEmail(String to, String subject, String messageText) throws AddressException, MessagingException {

            Properties props = new Properties();
            props.put("mail.smtp.host", "mserv3.int.pan.wroc.pl");
            props.put("mail.smtp.starttls.enable", "true"); 
            props.put("mail.smtp.password", "pass");
            props.put("mail.smtp.port", "587");
    //      props.put("mail.smtp.auth", "true");
            Session mailSession = Session.getDefaultInstance(props);
            Message simpleMessage = new MimeMessage(mailSession);

            InternetAddress fromAddress = null;
            InternetAddress toAddress = null;

                fromAddress = new InternetAddress(from);
                toAddress = new InternetAddress(to);

                simpleMessage.setFrom(fromAddress);
                simpleMessage.setRecipient(RecipientType.TO, toAddress);
                simpleMessage.setSubject(subject);
                simpleMessage.setText(messageText);

                Transport.send(simpleMessage);   // Exception here      

        }
    }

我有问题。我的代码在我的本地主机上运行良好。但是当我在服务器上部署 .war 时,它无法发送电子邮件。我不知道为什么。 服务器在同一个网络中,ping 成功。 mserv3.int.pan.wroc.pl 所以不是DNS的问题。

我的本​​地开发机器:Ubuntu 14.04 + Tomcat 7 服务器:CentOS 6 + Tomcat 7

最佳答案

我的服务器主机名

bash> hostname
vm10.int.pan.wroc.pl

我补充说:

props.put("mail.smtp.localhost", "vm10.int.pan.wroc.pl");

现在它可以工作了,但我不明白为什么。我必须分享我的 .war。人们不应该在每台装有 CentOS 6 的机器上编辑它。

关于javax.mail.SendFailedException,无法获取本地主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29279890/

相关文章:

java - java bukkit 将字符串转换为 ItemStack

Java套接字通信——传输加密数据

java - 从同一类射击多发子弹

git - Maven Git 存储库

java - 对基于 tomcat Web 应用程序的用户角色的只读访问

java - 如何通过返回数组来打印数组中的唯一元素?

java - 让tomcat自动部署带上下文

java - 端口 465 的 ssl false 不会引发服务器 smtp.gmail.com 的异常

spring-integration - javax.mail.FolderClosedException : * BYE JavaMail Exception: javax.net.ssl.SSLException:IMAP 连接超时(读取失败)

java - 发送邮件 : java.net.SocketException:网络无法访问:连接