首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >javamail - 504 5.5.2 : Helo命令被拒绝:需要完全限定的主机名

javamail - 504 5.5.2 : Helo命令被拒绝:需要完全限定的主机名
EN

Stack Overflow用户
提问于 2014-01-06 00:53:57
回答 1查看 12K关注 0票数 1

我将在我的webapp中通过java邮件发送邮件。我写了一段代码,并通过gmail帐户对其进行了测试,运行良好。然后,我用gmail信息替换我的主机smtp详细信息并对其进行测试。哦,它返回了下面的一个异常:

代码语言:javascript
运行
复制
javax.mail.MessagingException: 504 5.5.2 <rasta-PC>: Helo command rejected: need fully-qualified hostname

    at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:2099)
    at com.sun.mail.smtp.SMTPTransport.helo(SMTPTransport.java:1490)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:662)
    at javax.mail.Service.connect(Service.java:367)
    at javax.mail.Service.connect(Service.java:226)
    at javax.mail.Service.connect(Service.java:175)
    at javax.mail.Transport.send0(Transport.java:253)
    at javax.mail.Transport.send(Transport.java:124)
    at util.MailUtil.sendViaSSL(MailUtil.java:43)
    at control.member.AddMemberControl.add(AddMemberControl.java:107)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:357)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at filter.CheckLoginFilter.doFilter(CheckLoginFilter.java:57)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

你可以在下面的代码中看到我的代码:

代码语言:javascript
运行
复制
public static void sendViaSSL(final MailServerDetail msd,String to, String subject, String text){

    Properties props=new Properties();
    props.put("mail.smtp.host", "smtp.hostname");
    props.put("mail.smtp.socketFactory.port", "587");
    props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.port", "587");
    props.put("mail.smtp.ssl", "true");                 
    props.put("mail.smtp.starttls.enable","true");
    props.put("mail.smtp.timeout", "5000");             
    props.put("mail.smtp.connectiontimeout", "5000"); 
    Session session=Session.getInstance(props, new Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("My Mail Address", "Mail Password");
        }
    });

    MimeMessage message=new MimeMessage(session);
    try {
        message.setHeader("Content-Type", "text/plain; charset=UTF-8"); 
        message.setFrom(new InternetAddress("My Mail Address"));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
        message.setSubject(subject,"UTF-8");
        message.setText(text, "UTF-8","html");

        Transport.send(message);
    } catch (AddressException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (MessagingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}  

你能帮我解决吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-06 12:36:58

这通常与名称服务配置中的错误有关。可以通过将mail.smtp.localhost属性设置为计算机的完全限定主机名来解决此问题。有关详细信息,请参阅com.sun.mail.smtp package javadocs

另请参阅此common JavaMail mistakes列表。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20936314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档