java - 如何在服务器端存储邮件密码?

标签 java spring weblogic jakarta-mail application-server

我需要从部署在 Weblogic 10.0 上的应用程序发送电子邮件。我尝试将邮件 session 属性放在服务器端。 mail.hostmail.debug 等属性可以正常工作。但如何配置密码呢?现在我把它放在了 spring 配置文件中:

<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)。那我该怎么办呢?是否可以在服务器上而不是在应用程序中配置登录/密码信息?

编辑
大家都建议一些属性文件。我不想要他们。我的应用程序服务器上有一个邮件 session 。我通过 JNDI 获取此 session 。我可以配置主机用于发送邮件等。但我不能在那里输入密码。这不起作用。我希望所有配置都通过 Weblogic 控制台完成。如何实现这一目标?

最佳答案

不确定这在 weblogic 中是否有帮助,因为我使用 websphere atm,但我想在 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 上下文启动时加载,但是,邮件服务器更改的设置是一个相当大的更改,因此重新启动不会有什么问题的。

关于java - 如何在服务器端存储邮件密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1866415/

相关文章:

java - 通过 Scanner 保证整数输入的更简单方法?

java - heapdump 大小与 hprof 大小

spring - .RELEASE 在 Spring Framework 版本中是什么意思

spring - 是否可以在 spring boot 中使用 @Transactional 和 kotlin 协程?

java - 如何在 spring boot 应用程序中将用户添加到嵌入式 tomcat?

java - 当程序知道所有牌时,如何计算扑克牌的百分比?

spring - 使用 AspectJ 的 AOP 不适用于 <aop :aspectj-autoproxy/>

java - 创建包含 .ser 文件的以随机数字作为文件夹名称的目录

java - 如何编写可以支持 Tomcat 或 WebLogic 实现的 Java WebSocket Servlet

timeout - Weblogic 文件存储,发出请求时事务超时