将电子邮件发送到以下服务器失败:smtp.gmail.com:587

问题描述 投票:0回答:2

我正在尝试使用 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

但是在执行作业后以及发送电子邮件时会显示警告

电子邮件已发送至 sourour siala

来自电子邮件页面:[电子邮件受保护]

DiscountNotificationEmailContext 初始化

INFO [TaskExecutor-master-21338-ProcessTask [8796928541622]] [GenerateEmailAction] 已生成电子邮件

INFO [TaskExecutor-master-21341-ProcessTask [8796928574390]] [DefaultEmailService] 发送电子邮件 [8796294879296] 至 [[[email protected]]] 来自 [[email protected]] 主题 [我们产品的独家促销 -不要错过! ]

警告 [TaskExecutor-master-21341-ProcessTask [8796928574390]] [DefaultEmailService] 无法发送电子邮件 pk [8796294879296] 主题 [我们产品的独家促销 - 不要错过! ] 原因:将电子邮件发送到以下服务器失败:smtp.gmail.com:587

这是我的工作步骤

  1. 我创建了一个“ListFavoritesProcess”模型,用一个属性扩展了“StoreFrontCustomerProcess”

    <attribute qualifier="products" type="ProductList">
     <persistence type="property" />
     <description>Attribute contains the products that will be used in the process</description>
    </attribute>
    
  2. 然后我创建了process.xml文件

  3. 然后我创建了一个类来启动该过程

    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;
    }
    
  4. 然后我创建了从 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");
    }
    
java smtp gmail sap-commerce-cloud
2个回答
0
投票

原因

有时,Google 会禁止访问安全性较低的应用程序或其他应用程序,以保护您的帐户免受潜在漏洞的影响。可以关闭此设置,或者可以为帐户启用两因素身份验证

(recommended)

分辨率

In most cases the issue can be resolved by setting up two-step verification on Google.

通过此链接为帐户启用两步验证:Google 两步验证。

通过此链接生成特定密码:Google 特定密码。

在下面的配置中使用生成的特定密码: 邮件.smtp.密码=<"generated specific password">

另请参阅

https://support.google.com/mail/answer/7126229?visit_id=636795778044562052-2774445042&rd=2#cantsignin

本地测试电子邮件功能的替代方法:

https://groundlevelhybris.wordpress.com/2020/03/20/email-not-getting-triggered-in-hybris-local-environment/


0
投票

我今天遇到了同样的问题,尝试使用本地 SMTP 服务器作为中继从我的 Hybris / SAP Commerce Cloud 平台发送电子邮件。

错误消息是: 无法发送电子邮件 pk [1234567788999] 主题 [mysubject] 原因:将电子邮件发送到以下服务器失败:mysmtpserver.com:25

错误是由密码中的特殊字符“#”(井号)引起的。 我必须重置没有 # 字符的邮件中继帐户的密码,它成功了。

希望这能有所帮助。 问候,

© www.soinside.com 2019 - 2024. All rights reserved.