我正在尝试使用 sap commerce 发送电子邮件。 我已经很好地配置了配置扩展的local.properties
mail.smtp.server=smtp.gmail.com
mail.smtp.host=smtp.gmail.com
mail.smtp.port=587
[email protected]
mail.smtp.ssl.protocols=TLSv1.2
[email protected]
mail.smtp.password=********
mail.smtp.starttls.enable=true
mail.smtp.auth=true
但是在执行作业后和发送电子邮件时会显示警告
WARN [TaskExecutor-master-1591-ProcessTask [8796754772918]] [DefaultEmailService] Could not send e-mail pk [8796226197568] subject [Exclusive Promotions on Our Products - Don't Miss Out!! ] cause: Sending the email to the following server failed : smtp.gmail.com:587
这是我的工作步骤
我创建了一个“ListFavoritesProcess”模型,用一个属性扩展了“StoreFrontCustomerProcess”
<attribute qualifier="products" type="ProductList">
<persistence type="property" />
<description>Attribute contains the products that will be used in the process</description>
</attribute>
然后我创建了 process.xml 文件
然后我创建了一个类来开始这个过程
public Boolean discountNotificationEmailprocess(final CustomerModel customer, final Set<ProductModel> products)
{
Boolean bool = false;
if ((customer != null) && CollectionUtils.isNotEmpty(products))
{
final ListFavoritesProcessModel listFavoritesProcessModel = getBusinessProcessService()
.createProcess("listFavoritesProcessModel-" + customer.getUid() + "-"System.currentTimeMillis() + "-"+ Thread.currentThread().getId(), "DiscountNotificationEmailProcess");
listFavoritesProcessModel.setCustomer(customer);
listFavoritesProcessModel.setStore(getBaseStoreService().getBaseStoreForUid("electronics"));
listFavoritesProcessModel.setSite(getBaseSiteService().getBaseSiteForUID("electronics"));
listFavoritesProcessModel.setLanguage(getBaseStoreService().getBaseStoreForUid("electronics").getDefaultLanguage());
listFavoritesProcessModel.setCurrency(getBaseStoreService().getBaseStoreForUid("electronics").getDefaultCurrency());
listFavoritesProcessModel.setProducts(new ArrayList<ProductModel>(products));
getModelService().save(listFavoritesProcessModel);
getBusinessProcessService().startProcess(listFavoritesProcessModel);
bool = true;
}
return bool;
}
然后我创建了从 AbstractEmailContext 扩展的上下文
@Override
public void init(final ListFavoritesProcessModel listFavoritesProcessModel, final EmailPageModel emailPageModel)
{
super.init(listFavoritesProcessModel, emailPageModel);
products = new ArrayList<>();
final List<ProductModel> productsModel = listFavoritesProcessModel.getProducts();
productsModel.forEach(productModel -> {
final ProductData productData = getProductFacade().getProductForOptions(productModel,
Arrays.asList(ProductOption.BASIC, ProductOption.PRICE, ProductOption.STOCK, ProductOption.PROMOTIONS));
products.add(productData);
});
put(EMAIL, getCustomerEmailResolutionService().getEmailForCustomer(getCustomer(listFavoritesProcessModel)));
put(DISPLAY_NAME, listFavoritesProcessModel.getCustomer().getName());
put(FROM_EMAIL, Config.getParameter("mail.smtp.user"));
put(FROM_DISPLAY_NAME, "sap");
System.out.println("DiscountNotificationEmailContext init");
}