4

Spring のMailSenderインターフェースと具体的な実装JavaMailSenderImplを使用して、SMTP 経由でメールを送信する際にいくつか問題があります。GMail 経由でメールを送信できますが、当社の SMTP サーバー ( Postfix ) 経由では送信できません。

正しい構成

構成が正しいことを確認するために、優れたメール送信者ssmtpを使用しました。これは単純なユーティリティ (Sendmail をエミュレートできる) であり、SMTP 経由でメールを送信するためだけに使用されます。

以下は、メールを送信するために使用した2つのコマンドです。1 つ目は GMail 用で、2 つ目は当社の SMTP サーバー用です。両方のメールが正常に到着したため、次の構成ファイルは正しいものです。

$ ssmtp -C gmail-smtp.conf john.doe@gmail.com < gmail-message.txt 
$ ssmtp -C other-smtp.conf john.doe@thecompany.net < other-message.txt

ssmtp 構成ファイルとメッセージ ファイルの内容を以下に示します。構成ファイルがどのように構成されているかは、 http : //linux.die.net/man/5/ssmtp.confで確認できます。

gmail-message.txt:

To: john.doe@gmail.com
From: john.doe@gmail.com
Subject: Sent using the SMTP-server of GMail

Some content.

gmail-smtp.conf:

mailhub=smtp.gmail.com:587
UseSTARTTLS=yes
AuthUser=john.doe@gmail.com
AuthPass=john_password

その他のメッセージ.txt:

To: john.doe@thecompany.net
From: john.doe@thecompany.net
Subject: Sent using the SMTP-server of TheCompany

Some content.

その他-smtp.conf:

# No username or password = no authentication
hostname=thecompany.net
mailhub=mail.thecompany.net:25

GMail に対して動作する MailSender 構成

このSpring MailSender構成を使用して、GMail経由でメールを送信することに成功しました:

...
<bean id="mailSender" class ="org.springframework.mail.javamail.JavaMailSenderImpl" >
    <property name="host" value="smtp.gmail.com" />
    <property name="port" value="587" />
    <property name="username" value="john.doe@gmail.com" />
    <property name="password" value="john_password" />
    <property name="javaMailProperties">
    <props>
        <prop key="mail.smtp.starttls.enable">true</prop>
    </props>
    </property>
</bean>
...

問題(会社のSMTPサーバーを介して送信)

この MailSender 構成では:

...
<bean id="mailSender" class ="org.springframework.mail.javamail.JavaMailSenderImpl" >
    <property name="host" value="mail.thecompany.net" />
    <property name="port" value="25" />
</bean>
...

私はこの例外を受け取ります:

org.springframework.mail.MailSendException; nested exceptions (1) are:
Failed message 1: javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 504 5.5.2 <rat>: Helo command rejected: need fully-qualified hostname

at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:422)
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:308)
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:297)
... (The rest are methods I've created, which are irrelevant)    

ssmtpを使用してother-smtp.confからhostname= thecompany.net を削除すると、 504 5.5.2 : Helo command reject: need fully-qualified hostname取得します。どうにかしてホスト名を提供する必要があると思います。私のコンピューター名はratですが、 thecompany.netが必要なようです。

ありとあらゆる助けに感謝します!

4

5 に答える 5

3

マットbによる前の回答を完了するために追加するには、javamailの正しいオプションはsmtp.mail.localhost

<property name="javaMailProperties">
    <props>
        <prop key="mail.smtp.localhost">thecompany.net</prop>
    </props>
</property>
于 2011-06-22T12:31:02.263 に答える
2

プロパティ「mail.smtp.localhost」を正しい値 ( thecompany.net ) で追加してみてください

于 2009-05-22T13:38:02.850 に答える
1

SMTP サーバーで設定する必要がある追加のプロパティ (ホスト名) をプロパティに渡すことができますjavaMailPropertiesか?

<bean id="mailSender" class ="org.springframework.mail.javamail.JavaMailSenderImpl" >
    <property name="host" value="mail.thecompany.net" />
    <property name="port" value="25" />
    <!-- addition: -->
    <property name="javaMailProperties">
        <props>
            <prop key="hostname">thecompany.net</prop>
        </props>
    </property>
</bean>

hostnameJavaMail APIの正しいキー名が何であるかはよくわかりません。

于 2009-05-12T20:03:28.803 に答える
0

あなたの場合、それはアドレス解決の問題だと思います。このコードをデプロイしたマシンから指定された名前を使用してメールサーバーにアクセスできることを確認してください。ホストファイルにエントリを追加するだけではない場合。

于 2009-05-12T19:53:30.580 に答える