【问题标题】:Broadleaf Commerce Email Java ConfigBroadleaf Commerce 电子邮件 Java 配置
【发布时间】:2017-10-30 10:51:19
【问题描述】:

使用 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 配置?

下面是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;
    }
}

【问题讨论】:

    标签: java spring-mvc broadleaf-commerce


    【解决方案1】:

    1) ThymeleafMessageCreator 似乎已从版本 5.x 中删除,我无法在发行说明或其他地方找到说明。我更喜欢使用 Thymeleaf 电子邮件模板,我可以添加我自己的类,它工作正常,但我仍然面临第二个问题,所以想知道是否还有其他理由删除它?

    这在 5.1 添加 Thymeleaf 3 支持时进行了更改,详细信息在 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 配置?

    从 blEmailInfo() 方法中删除 @Bean 注解,它会导致在所有 bl*EmailInfo 方法中重用相同的 EmailInfo 对象,而不是使用新对象。

    @Bean

    public EmailInfo blEmailInfo() {
        EmailInfo info = new EmailInfo();
        info.setFromAddress("");
        info.setSendAsyncPriority("2");
        info.setSendEmailReliableAsync("false");
        return info;
    }
    

    【讨论】:

    • 非常感谢。调查了这些,结果将消息创建者更改为 BroadleafThymeleaf3MessageCreator 一切都很好。第二个问题也解决了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    相关资源
    最近更新 更多