gpt4 book ai didi

spring - 如何为使用 Spring 的 JavaMailSenderImpl 发送的电子邮件设置内容类型

转载 作者:IT老高 更新时间:2023-10-28 13:46:03 24 4
gpt4 key购买 nike

问题来自主题。我正在使用 spring 3.0.3.RELEASE 中的 JavaMailSenderImpl 和 velocity 1.6.4 来从模板准备邮件。

当我从我的 webapp 收件人发送带有克罗地亚语字符的电子邮件时,我会收到“?”在正常克罗地亚字符的立场。如果我打开邮件的 Debug模式, 从日志中我可以看到 Content-type 设置为:

Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

如何设置:

Content-Type: text/html; charset=utf-8?

我在开发这个 web 应用程序时使用 gmail 发送邮件。

这是我在 spring 的 servlet xml conf 文件中的设置:

<bean id="userAuthorizationManager" class="com.mypackage.manage.SimpleUserAuthorizationManagerImpl">
<property name="mailSender" ref="mailSender" />
<property name="velocityEngine" ref="velocityEngine" />
<property name="from" value="address" />
<property name="authorizationAddress" value="some text" />
<property name="subject" value="some text" />
</bean>

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com" />
<property name="port" value="465" />
<property name="username" value="user" />
<property name="password" value="pass" />
<property name="protocol" value="smtps" />

<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.connectiontimeout">5000</prop>
<prop key="mail.smtp.sendpartial">true</prop>
<prop key="mail.smtp.userset">true</prop>
<prop key="mail.mime.charset">UTF-8</prop>
<prop key="mail.smtp.isSecure">true</prop>
<prop key="mail.smtp.requiresAuthentication">true</prop>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.port">465</prop>
<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
<prop key="mail.smtp.socketFactory.fallback">false</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.debug">true</prop>
</props>
</property>
</bean>

<bean id="velocityEngine"
class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="velocityProperties">
<value>
resource.loader=class
class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
</value>
</property>
</bean>

这是我来自邮件管理器的代码:

private void sendConfirmationEmail(final User user, final int requestId) {
MimeMessagePreparator preparator = new MimeMessagePreparator() {
public void prepare(MimeMessage mimeMessage) throws Exception {
MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
message.setTo(user.getEmailAddress());
message.setFrom(from);
message.setSubject(subject);

Map<String, Object> model = new HashMap<String, Object>();
model.put("user", user);
model.put("authorizationAddress", authorizationAddress);
model.put("requestId", requestId);
String text = VelocityEngineUtils
.mergeTemplateIntoString(
velocityEngine,
"com/mypackage/mail/registration-confirmation.vm",
model);
message.setText(text, true);
}
};
PendingMail pendingMail = new PendingMail(preparator);
pool.submit(pendingMail);

}
private class PendingMail implements Callable<Object> {
MimeMessagePreparator preparator;

protected PendingMail(MimeMessagePreparator preparator) {
this.preparator = preparator;
}

public Object call() {
mailSender.send(preparator);
return null;
}
}

你还有什么建议吗?

问候,蒂霍

最佳答案

我解决了我的问题,感谢 this post .

根据帖子我把这个放在mailSender bean配置中:

<property name="defaultEncoding" value="UTF-8"/>

关于spring - 如何为使用 Spring 的 JavaMailSenderImpl 发送的电子邮件设置内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3275133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com