Broadleaf Commerce电子邮件Java配置

时间:2017-10-29 22:39:13

标签: java spring-mvc broadleaf-commerce

使用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;
    }
}

1 个答案:

答案 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;
}