首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在服务器端存储邮件密码?

问如何在服务器端存储邮件密码?
EN

Stack Overflow用户
提问于 2009-12-08 19:39:03
回答 3查看 3.2K关注 0票数 2

我需要从部署在WebLogic10.0上的应用程序发送电子邮件。我尝试将邮件会话属性放在服务器端。像mail.host或mail.debug这样的属性工作正常。但是如何配置密码呢?现在我把它放在了spring配置文件中:

代码语言:javascript
复制
<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文档中说没有password属性(尽管我在一些示例中看到过mail.smtp.password )。那么我该怎么做呢?是否可以在服务器上配置登录/密码信息,而不是在应用程序中配置?

编辑

所有人都建议使用一些属性文件。我不想要他们。我的应用服务器上有一个邮件会话。我通过JNDI获得了这个会话。我可以配置这些主机用来发送邮件等等。但我不能把密码放在那里。它不起作用。我希望所有的配置是由Weblogic控制台完成的。如何做到这一点呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-08 21:31:27

我不确定这在weblogic中是否会有帮助,因为我使用的是websphere atm,但我想在weblogic中也可以:

在spring上下文中设置用户名和密码,如下所示:

代码语言:javascript
复制
<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中添加以下内容:

代码语言:javascript
复制
<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上下文启动时加载,但是,邮件服务器的设置更改是非常重要的更改,因此重新启动不会出错。

票数 2
EN

Stack Overflow用户

发布于 2013-05-02 18:23:10

有一种方法可以做到这一点,即使Weblogic不会自动识别mail.smtp.password属性。您可以像往常一样将此属性添加到EJBEJB属性字段,并在中发送电子邮件,如下所示:

代码语言:javascript
复制
@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(); }
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2009-12-08 20:29:58

已经有关于使用属性文件的答案,但可能缺少一个重要的方面。此帐户密码是否需要保护?

如果是这样,您可以考虑对文件或密钥进行加密。在代码中嵌入简单的加密密钥可能就足够了。加密字段或整个文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1866415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档