使用Broadleaf 5.2版,其中所有/大多数配置都切换到基于java。尝试通过取消注释blMessageCreator bean定义并添加我自己的smtp服务器设置来配置CoreEmailConfig.java中的电子邮件后,我可以成功发送电子邮件,但是已经注意到两个问题:
1)ThymeleafMessageCreator似乎已从版本5.x中删除,我无法在发行说明或其他地方找到说明原因。我更喜欢使用Thymeleaf电子邮件模板,我可以添加自己的类,它可以正常工作,但我仍然面临第二个问题,所以想知道是否有其他理由将其删除?
2)无论BLC框架尝试注入哪个EmailInfo bean(即blRegistrationEmailInfo,blForgotPasswordEmailInfo等...),它似乎总是在CoreEmailConfig.java文件中注入最后一个。在演示站点中,最后一个是blReturnConfirmationEmailInfo。这是版本5.x或5.2中的其他人遇到的问题,特别是使用spring boot和java configs吗?
以下是CoreEmailConfig.java
@Configuration
public class CoreEmailConfig {
/**
* A dummy mail sender has been set to send emails for testing purposes only
* To view the emails sent use "DevNull SMTP" (download separately) with the following setting:
* Port: 30000
*/
@Bean
public JavaMailSender blMailSender() {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost("");
sender.setPort(587);
sender.setProtocol("smtp");
sender.setUsername("");
sender.setPassword("");
Properties javaMailProps = new Properties();
javaMailProps.setProperty("mail.smtp.starttls.enable", "true");
javaMailProps.setProperty("mail.smtp.auth", "true");
javaMailProps.setProperty("mail.smtp.timeout", "25000");
sender.setJavaMailProperties(javaMailProps);
return sender;
}
/**
* Uncomment this bean to send real emails
*/
@Bean
@Autowired
public MessageCreator blMessageCreator(@Qualifier("blEmailTemplateEngine") TemplateEngine tlTemplateEngine, @Qualifier("blMailSender") JavaMailSender mailSender) {
return new ThymeleafMessageCreator(tlTemplateEngine, mailSender);
}
// @Bean
// @Autowired
// public MessageCreator blMessageCreator(@Qualifier("blMailSender") JavaMailSender mailSender) {
// return new NullMessageCreator(mailSender);
// }
@Bean
public EmailInfo blEmailInfo() {
EmailInfo info = new EmailInfo();
info.setFromAddress("");
info.setSendAsyncPriority("2");
info.setSendEmailReliableAsync("false");
return info;
}
@Bean
public EmailInfo blRegistrationEmailInfo() {
EmailInfo info = blEmailInfo();
info.setSubject("You have successfully registered!");
info.setEmailTemplate("register-email");
return info;
}
@Bean
public EmailInfo blForgotPasswordEmailInfo() {
EmailInfo info = blEmailInfo();
info.setSubject("Reset password request");
info.setEmailTemplate("resetPassword-email");
return info;
}
@Bean
public EmailInfo blOrderConfirmationEmailInfo() {
EmailInfo info = blEmailInfo();
info.setSubject("Your order with The Heat Clinic");
info.setEmailTemplate("orderConfirmation-email");
return info;
}
@Bean
public EmailInfo blFulfillmentOrderTrackingEmailInfo() {
EmailInfo info = blEmailInfo();
info.setSubject("Your order with The Heat Clinic Has Shipped");
info.setEmailTemplate("fulfillmentOrderTracking-email");
return info;
}
@Bean
public EmailInfo blReturnAuthorizationEmailInfo() {
EmailInfo info = blEmailInfo();
info.setSubject("Your return with The Heat Clinic");
info.setEmailTemplate("returnAuthorization-email");
return info;
}
@Bean
public EmailInfo blReturnConfirmationEmailInfo() {
EmailInfo info = blEmailInfo();
info.setSubject("Your return with The Heat Clinic");
info.setEmailTemplate("returnConfirmation-email");
return info;
}
}
答案 0 :(得分:0)
1)ThymeleafMessageCreator似乎已从版本5.x中删除,我无法在发行说明或其他地方找到说明原因。我更喜欢使用Thymeleaf电子邮件模板,我可以添加自己的类,它可以正常工作,但我仍然面临第二个问题,所以想知道是否有其他理由将其删除?
在添加了Thymeleaf 3支持时,5.1中的内容已更改,详细信息在5.0到5.1迁移指南中,更具体地说,在此处:https://www.broadleafcommerce.com/docs/core/current/migration-notes/5.1-thymeleaf-migration
请注意,在Demo项目中,似乎Thymeleaf Presentation的依赖项不在Core项目的POM文件中,如果您希望将EmailConfig保留在Core模块中,则可能需要自己添加它。
2)无论BLC框架尝试注入哪个EmailInfo bean(即blRegistrationEmailInfo,blForgotPasswordEmailInfo等...),它似乎总是在CoreEmailConfig.java文件中注入最后一个。在演示站点中,最后一个是blReturnConfirmationEmailInfo。这是版本5.x或5.2中的其他人遇到的问题,特别是使用spring boot和java configs吗?
从blEmailInfo()方法中删除@Bean注释,它导致在所有bl * EmailInfo方法中重用相同的EmailInfo对象,而不是使用新对象。
<击> @Bean 撞击>
public EmailInfo blEmailInfo() {
EmailInfo info = new EmailInfo();
info.setFromAddress("");
info.setSendAsyncPriority("2");
info.setSendEmailReliableAsync("false");
return info;
}