0

春にアプリケーションを使用していますが、メールの送信に関する問題があります。メールの送信中に例外が発生します

「javax.mail.MessagingException: 501 5.0.0 HELO にはドメイン アドレスが必要です」 .

この問題について調査したところ、メールを送信しているマシンに関連するものであることがわかりました。

これは私が最初にメールプロパティを設定する方法です

<bean id="mailSession" class="javax.mail.Session" factory-method="getInstance">
        <constructor-arg>
            <props>
                <prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
                <prop key="mail.smtp.socketFactory.port">${mail.port}</prop>
                <prop key="mail.smtp.socketFactory.class">${mail.smtp.socketFactory.class}</prop>
                <prop key="mail.smtp.socketFactory.fallback">${mail.smtp.socketFactory.fallback}</prop>
                </prop>
            </props>
        </constructor-arg>
        <constructor-arg ref="smtpAuthenticator" />
    </bean>
    <bean id="smtpAuthenticator" class="com.iris.allofactor.commons.mail.SmtpAuthenticator">
        <property name="logger"><ref bean="logger"/></property> 
        <constructor-arg><value>${mail.username}</value></constructor-arg>
        <constructor-arg><value>${mail.password}</value></constructor-arg>
    </bean>
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host"><value>${mail.host}</value></property>
        <property name="session" ref="mailSession" />
    </bean> 

HELO例外を取得した後、別のプロパティを追加しました

<prop key="mail.smtp.localhost">${mail.smtp.localhost}

${mail.smtp.socketFactory.fallback} の後

メールは正常に受信されましたが、受信者がメールを受け取っていません。この問題を解決するために誰か助けてもらえますか

ビーンのロード中に例外も発生しています。例外は次のようなものです

<2013-07-29 06:53:29,270><Failed to get local InetAddress for VMID. This is unlikely to matter. At all. We'll add some extra randomness>
java.net.UnknownHostException: Tomcat2: Tomcat2
    at java.net.InetAddress.getLocalHost(InetAddress.java:1354)
    at com.mchange.v2.c3p0.impl.C3P0ImplUtils.generateVmId(C3P0ImplUtils.java:120)
    at com.mchange.v2.c3p0.impl.C3P0ImplUtils.<clinit>(C3P0ImplUtils.java:98)
    at com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.<init>(PoolBackedDataSourceBase.java:227)
    at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.<init>(AbstractPoolBackedDataSource.java:62)
    at com.mchange.v2.c3p0.ComboPooledDataSource.<init>(ComboPooledDataSource.java:108)
    at com.mchange.v2.c3p0.ComboPooledDataSource.<init>(ComboPooledDataSource.java:104)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
    at org.springframework.web.context.ContextLoaderServlet.init(ContextLoaderServlet.java:81)
    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4187)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4496)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:519)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
    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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

これがコアの問題であるとは思いません。解決策を見つけるのを手伝ってください

4

4 に答える 4

1

問題を解決するためにあなたがしなければならないことの下に、私は同様の問題を抱えていました。

マシンが起動すると、DNS を参照できるようになる前に、いくつかのホスト名と IP アドレスのマッピングを知る必要があります。このマッピングは /etc/hosts ファイルに保持されます。ネーム サーバーがない場合、システム上のネットワーク プログラムはこのファイルを調べて、ホスト名に対応する IP アドレスを決定します。

TCP / UDPパケットをルーティングするために最初にローカルIPマッピングを見つけようとしているアプリケーションにメールを実装しているようです

ただ行う:

  1. vi /etc/hosts
  2. 今、あなたは見ることができます

    27.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

  3. 最初の行を変更し、Tomcat2 Tomcat2.localadminTomcat2 をアタッチすると、次のようになります

27.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 Tomcat2 Tomcat2.localadminTomcat2
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

それでおしまい。

よろしく、エイミー

于 2014-01-20T16:11:12.137 に答える
0

c3po プールは、を使用してローカル アドレスを取得しようとしていますInetAddress.getLocalHost().getAddress();。これにより、ローカル ホスト アドレスを解決できない場合に例外が生成されます。ほとんどの場合、マシンのホスト アドレスが正しく構成されていません。Linux サーバーの /etc/hosts が正しく構成され、/etc/hostname に対応している必要があることを考慮してください。

于 2014-06-09T09:39:46.610 に答える
0

Oracle/Sun の公式 Web サイトから、

Q: メッセージを送信しようとすると、「MessagingException: 501 HELO requires domain address」というメッセージが表示されます。A: SMTP プロバイダーは、SMTP HELO コマンドで InetAddress.getLocalHost().getHostName() の結果を使用します。その呼び出しがデータを返さない場合、HELO コマンドで名前は送信されません。JDK とネーム サーバーの構成を調べて、その呼び出しが正しいデータを返すことを確認してください。「mail.smtp.localhost」プロパティを、HELO コマンドで使用する名前に設定することもできます。

ソース: http://www.oracle.com/technetwork/java/faq-135477.html#helo

私の理解では、これは、電子メール サーバーが InetAddress.getLocalHost().getHostName() によって返された Java Web サーバーの名前を見て、それを拒否したときに発生します。電子メール サーバーが Web サーバーの DNS を反転できない場合、または Web サーバーが無意味な名前 (localhost など) を提供した場合、ホスト名は拒否される可能性があります。Web サーバーが自身を localhost として識別している場合は、props.put("mail.smtp.localhost", "real-hostname.com"); などの JDK プロパティを追加してみてください。

別の潜在的に役立つリンクはhttp://www.coderanch.com/t/271097/java/java/JavaMail-Exception-HELO-requires-domainです

于 2013-10-14T15:03:22.910 に答える
0

今日も同じエラーメッセージが表示されました。「localhost」を解決できません。IP アドレスとサーバー名をホスト ファイル /etc/hosts に追加するだけで解決します。

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 Tomcat2: Tomcat2

yourIP      Tomcat2: Tomcat2 "your hostnamename"
于 2014-07-22T11:29:16.937 に答える