2009-12-08 8 views
2

Je dois envoyer des e-mails depuis mon application déployée sur Weblogic 10.0. J'essaye de mettre des propriétés de session de courrier sur le côté de serveur. Les propriétés telles que mail.host ou mail.debug fonctionnent correctement. Mais comment puis-je configurer le mot de passe? Maintenant, je l'ai dans le fichier de configuration de printemps:Comment stocker le mot de passe du courrier sur le serveur?

<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> 

J'ai essayé mail.smtp.password bien, mais il ne fonctionne pas. La documentation de Sun indique qu'il n'y a aucune propriété pour le mot de passe (bien que j'ai vu mail.smtp.password dans quelques exemples). Alors, comment dois-je faire? Est-il possible d'avoir des informations de connexion/mot de passe configurées sur le serveur, pas dans l'application?

EDIT
Vous proposez tous des fichiers de propriétés. Je ne les veux pas. J'ai une session de courrier sur mon serveur d'application. Je reçois cette session par JNDI. Je peux configurer là l'hôte à utiliser pour envoyer des mails et ainsi de suite. Mais je ne peux pas y mettre un mot de passe. Ça ne marche pas. Je veux que toute la configuration soit faite par la console Weblogic. Comment y parvenir?

Répondre

2

Pas sûr que cela vous aidera dans weblogic, comme je travaille avec websphere atm, mais j'imagine travaillerait en weblogic ainsi:

set-up votre nom d'utilisateur et mot de passe dans le contexte de votre ressort en tant que tel:

<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> 

et ajoutez ce qui suit dans votre 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 recherchera les valeurs du nom d'utilisateur et du mot de passe dans l'environnement de l'application Web. La console d'administration weblogic devrait vous permettre de configurer les entrées d'environnement et donc le nom d'utilisateur et le mot de passe. Notez que vous devrez probablement redémarrer l'application pour que les modifications soient prises en compte, car elles ne seront chargées que lorsque le contexte du printemps commencera. Toutefois, les paramètres du serveur de messagerie sont très importants. Ce ne serait pas si mal.

+0

semble être la meilleure idée. Malheureusement, la console d'administration Weblogic n'a pas d'éditeur pour les variables d'environnement. Ou je ne peux pas le trouver. Quoi qu'il en soit, j'accepte votre réponse comme la plus utile de tout ce qui m'a été donné. –

0

Il existe déjà des réponses sur l'utilisation d'un fichier de propriétés, mais un aspect important peut être manquant. Ce mot de passe doit-il être protégé?

Si tel est le cas, vous pouvez envisager de chiffrer le fichier ou la clé. Une clé de chiffrement intégrée simple dans le code peut être suffisante. Chiffrez le champ ou le fichier entier.

1

Il existe un moyen de le faire, même si Weblogic ne reconnaît pas automatiquement la propriété mail.smtp.password. Vous pouvez ajouter cette propriété comme d'habitude au champ JavaMail Propriétés et envoyer l'e-mail dans votre EJB comme suit:

@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(); } 
     } 
    } 
}