以下代码效果很好
但是,我的问题是如何设置'javaMailProperties'programaticaly? 因为我想从代码中设置ssl / tsl。我无法访问这些属性,我不知道为什么,感谢解决方案和解释。
SimpleMailMessage message=(SimpleMailMessage)SpringUtil.getContext().
getBean("templateMessage");
JavaMailSenderImpl mailSender = (JavaMailSenderImpl)SpringUtil.getContext()
.getBean("mailSender");
mailSender.send(message);
--applicationcontext.xml--
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com"/>
<property name="port" value="587"/>
<property name="username" value="your gmail address"/>
<property name="password" value="your password"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
</props>
</property>
</bean>
<bean id="templateMessage" class="org.springframework.mail.SimpleMailMessage" >
<property name="from" value="from@gmail.com"/>
<property name="to" value="to@gmail.com"/>
<property name="subject" value="subject"/>
<property name="text" value="hello"/>
</bean>
(我不想使用javax.mail方法,有人问过)
答案 0 :(得分:3)
使用:
mailSender.getJavaMailProperties().setProperty("mail.smtp.starttls.enable", "true");
与要以编程方式设置的其他属性相同。
编辑:
我检查了JavaMailSenderImpl
类的源代码:
/**
* Allow Map access to the JavaMail properties of this sender,
* with the option to add or override specific entries.
* <p>Useful for specifying entries directly, for example via
* "javaMailProperties[mail.smtp.auth]".
*/
public Properties getJavaMailProperties() {
return this.javaMailProperties;
}
如您所见,getJavaMailProperties是一个公共方法,应该可供您使用。我的Spring框架版本是3.0.5。
答案 1 :(得分:0)
快速谷歌未经验证。 在mailSender.getJavaMailProperties.setProperty上调用setProperty(String key,String value)(“mail.smtp.auth”,true)
http://download.oracle.com/javase/6/docs/api/java/util/Properties.html