2017-04-12 96 views
0

私たちはWicket 6 Webアプリケーションにメール機能を備えています。最近、私はメーリングリストの資格を新しいものに変更しなければならなかった。私は私のローカルシステム(OS Windows、Tomcat 7 Webサーバー)でテストしました。メールは送信され、私はそれを受け取った。 Webサーバー(OS:Debian)で同じ資格情報を適用すると、次のエラーメッセージが表示されます。501 - パラメータまたは引数の構文エラーメール送信エラー501 - サーバー上のパラメータまたは引数に構文エラーがありますが、ローカルシステムにはありません

メールアドレスを複数回確認しましたが、したがって、私はおそらく、Tomcat 7、Apache 2、またはhosterのいずれかからサーバー上に何らかの形でメッセージがブロックされていると推測しています(私はhosterに電話しましたが、ファイアウォールは発信信号をブロックしていません)。しかし、古い資格情報では、郵送サービスは完璧に動作しています。したがって、すべての発信信号がブロックされるわけではありません。

私はこのようなサーバー構成ではあまり経験がありません。誰でも私に設定を確認しなければならないヒントを教えてください。ご協力ありがとうございます。

EDIT

我々は、Springフレームワークの組み込みのJavaMailサービスを使用しているメールを送信します。コードは次のようになります。

public class PrMailSendServiceImpl implements IPrMailSenderService{ 
    private JavaMailSenderImpl javaMailSenderService; 
    private String defaultEmailFrom = "[email protected]"; 
    private String defaultEmailTo; 
    public void sendEmail(String toEmail, String mailSubject, String mailContent) throws MessagingException { 
     MimeMessage msg = javaMailSenderService.createMimeMessage(); 
     MimeMessageHelper mime = new MimeMessageHelper(msg, true, "UTF-8"); 
     mime.setText(mailContent, true); 
     mime.setSubject(mailSubject); 
     mime.setTo(toEmail); 
     mime.setFrom(defaultEmailFrom); 
     javaMailSenderService.send(msg); 
    } 
/*getter and setter*/ 
} 

sendメソッドの実行中にエラーが発生しました。

春-context.xmlファイルは、TE次の設定が含まれています

<bean id="javaMailSenderService" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
    <property name="host" value="mrvnet.kundenserver.de" /> 
    <property name="port" value="25" /> 
    <property name="username" value="[email protected]" /> 
    <property name="password" value="myPassword" /> 

    <property name="javaMailProperties"> 
     <props> 
       <prop key="mail.smtp.auth">true</prop> 
       <prop key="mail.smtp.starttls.enable">true</prop> 
      </props> 
    </property> 
</bean> 

<bean id="mailSendService" class="de.virtualsolution.procon.service.impl.PrMailSendServiceImpl"> 
    <property name="javaMailSenderService"><ref bean="javaMailSenderService" /></property> 
    <property name="defaultEmailFrom"><value>[email protected]</value></property> 
</bean> 
+0

:したがって、手動今それがどのように見える私は春-のcontext.xmlに

をライン<prop key="mail.smtp.localhost">my.server.host.name</prop>を追加HELOために必要なホスト名を設定します。問題はWicketには何もないようです。 –

+0

はい、メール送信ソフトウェアが何であるか教えてください。そして、あなたはこのエラーを参照してください... –

+0

あなたのコメントとサポートをありがとう。私はメール設定を追加しました。より多くの情報が必要な場合は、私に知らせてください。遅れて申し訳ありませんが、私は休暇中でした:-) –

答えて

0

が、私はこの問題を考え出しました。私はその答えをhttps://community.hpe.com/t5/System-Administration/Error-sending-e-mails-from-Java-ehlo-problem/td-p/4145190

から受け取りました。HELOとEHLOの使用を規定しています。 SMTPダイアログでHELO/EHLOの使用法が正しくありません。 ほとんどのメール転送エージェント(MTA)は、SMTP HELO およびEHLOコマンドで指定されたドメイン名にDNS (A-およびPTR-リソースレコード)の検証 を実行します。これはRFC 2821、 に違反する可能性があるため、電子メールは通常デフォルトで拒否されません。 つまり、EHLOとHELOは通常 にFQDNが必要です。 クライアントは メールトランザクションを開始する前にHELOまたはEHLOを発行しなければなりません。

SOLUTION我々はいくつかのサブドメインを持っている私たちのサーバーで

Unable to send email using javamail api in linuxを参照してください)。したがって、InetAddress.getLocalHost().getHostName()を呼び出すと、例外がスローされました。言うことは不可能な構成など、コードなしで

<bean id="javaMailSenderService" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
    <property name="host" value="mrvnet.kundenserver.de" /> 
    <property name="port" value="25" /> 
    <property name="username" value="[email protected]" /> 
    <property name="password" value="myPassword" /> 

    <property name="javaMailProperties"> 
     <props> 
       <prop key="mail.smtp.auth">true</prop> 
       <prop key="mail.smtp.starttls.enable">true</prop> 
       <prop key="mail.smtp.localhost">my.server.host.name</prop> 
      </props> 
    </property> 
</bean> 

<bean id="mailSendService" class="de.virtualsolution.procon.service.impl.PrMailSendServiceImpl"> 
    <property name="javaMailSenderService"><ref bean="javaMailSenderService" /></property> 
    <property name="defaultEmailFrom"><value>[email protected]</value></property> 
</bean>