2

Weblogic10.0にデプロイされているアプリケーションから電子メールを送信する必要があります。メールセッションのプロパティをサーバー側に配置しようとしています。のようなプロパティmail.hostまたは正常にmail.debug動作します。しかし、どうすればパスワードを設定できますか?今、私はそれを春の設定ファイルに持っています:

<bean id="mailSender"
    class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="session" ref="mailSession"/>
    <property name="username" value="myLogin"></property>
    <property name="password" value="myPassword"></property>
</bean>     
<bean id="alertsMailSession" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
        <value>mail/mainSession</value>
    </property>     
    <property name="resourceRef"> 
        <value>true</value>
    </property>
</bean>

プロパティを試しmail.smtp.passwordましたが、機能しません。Sunのドキュメントには、パスワードのプロパティはないと書かれています(mail.smtp.passwordいくつかの例で見ましたが)。それで、私はそれをどのようにすべきですか?アプリケーションではなくサーバーでログイン/パスワード情報を構成することは可能ですか?

編集
皆さんはいくつかのプロパティファイルを提案します。欲しくない。アプリケーションサーバーにメールセッションがあります。このセッションはJNDIで取得します。メールの送信などに使用するホストを設定できます。しかし、私はそこにパスワードを置くことができません。動作しません。すべての構成をWeblogicコンソールで実行する必要があります。それを達成する方法は?

4

3 に答える 3

2

私はwebsphereatmで作業しているので、これがweblogicで役立つかどうかはわかりませんが、weblogicでも機能すると思います。

Springコンテキストでユーザー名とパスワードを次のように設定します。

<bean id="mailSender" 
    class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="session" ref="mailSession"/>
<property name="username">
    <jee:jndi-lookup jndi-name="config/mail/username" resource-ref="true"/>
</property>
<property name="password">
    <jee:jndi-lookup jndi-name="config/mail/password" resource-ref="true"/>
</property>

そして、web.xmlに以下を追加します。

<env-entry>
    <env-entry-name>config/mail/username</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value></env-entry-value>
</env-entry>
<env-entry>
    <env-entry-name>config/mail/password</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value></env-entry-value>
</env-entry>

Springは、Webアプリケーション環境からユーザー名とパスワードの値を検索します。weblogic管理コンソールでは、環境エントリを設定できるため、ユーザー名とパスワードを設定できます。変更を有効にするには、Springコンテキストの開始時にのみロードされるため、アプリケーションを再起動する必要がありますが、メールサーバーの変更の設定はかなり大きな変更であるため、再起動してください。それは間違いではないでしょう。

于 2009-12-08T13:31:26.507 に答える
1

Weblogicがプロパティを自動的に認識しない場合でも、これを行う方法がありmail.smtp.passwordます。このプロパティを通常どおりJavaMailプロパティフィールドに追加し、次のようにEJBで電子メールを送信できます。

@Stateless
public class MailBean {
    @Resource(name="mail/MailSession")
    private Session session;

    public void sendMail() {
        Transport transport = null;
        try {
            Message message = new MimeMessage(session);
            // prepare your mail here...
            transport = session.getTransport("smtp");
            String user = session.getProperty("mail.smtp.user"); 
            String password = session.getProperty("mail.smtp.password");
            transport.connect(user, password);
            message.saveChanges();
            transport.sendMessage(message, message.getAllRecipients());
        } finally {
            if (transport != null) try { transport.close(); } 
            catch (MessagingException e) { e.printStackTrace(); }
        }
    }
}
于 2013-05-02T10:23:09.500 に答える
0

プロパティファイルの使用に関する回答はすでにありますが、欠落している可能性のある重要な側面が1つあります。このアカウントのパスワードは保護する必要がありますか?

その場合は、ファイルまたはキーの暗号化を検討してください。コードに埋め込まれた単純な暗号化キーで十分な場合があります。フィールドまたはファイル全体を暗号化します。

于 2009-12-08T12:29:57.697 に答える