电子邮件服务

通过将AEM DefaultMailService配置为使用高级联网出口端口,从AEM as a Cloud Service发送电子邮件。

由于(大部分)邮件服务不会通过HTTP/HTTPS运行,因此必须代理从AEM as a Cloud Service到邮件服务的连接。

  • smtp.host设置为OSGi环境变量$[env:AEM_PROXY_HOST;default=proxy.tunnel],以便通过出口路由。

    • $[env:AEM_PROXY_HOST]是AEM as a Cloud Service映射到内部proxy.tunnel主机的保留变量。
    • 请勿尝试通过Cloud Manager设置AEM_PROXY_HOST
  • smtp.port设置为映射到目标电子邮件服务主机和端口的portForward.portOrig端口。 此示例使用映射: AEM_PROXY_HOST:30465smtp.sendgrid.com:465

    • smpt.port设置为portForward.portOrig端口,而不是SMTP服务器的实际端口。 smtp.portportForward.portOrig端口之间的映射由Cloud Manager portForwards规则建立(如下所示)。

由于密码不能存储在代码中,因此最好使用机密OSGi配置变量、使用AIO CLI或Cloud Manager API设置来提供电子邮件服务的用户名和密码。

通常,灵活端口出口用于满足与电子邮件服务的集成,除非需要allowlistAdobeIP,在这种情况下,可以使用专用出口IP地址

此外,请查看有关发送电子邮件的AEM文档。

高级联网支持

以下高级联网选项支持以下代码示例。

在执行本教程之前,请确保已设置适当的高级联网配置。

OSGi配置

此OSGi配置示例将AEM Mail OSGi服务配置为通过enableEnvironmentAdvancedNetworkingConfiguration操作的以下Cloud Manager portForwards规则使用外部邮件服务。

...
"portForwards": [{
    "name": "smtp.mymail.com",
    "portDest": 465,
    "portOrig": 30465
}]
...
  • ui.config/src/jcr_root/apps/wknd-examples/osgiconfig/config/com.day.cq.mailer.DefaultMailService.cfg.json

根据您的电子邮件提供商的要求配置AEM DefaulMailService(例如smtp.ssl等)。

{
    "smtp.host": "$[env:AEM_PROXY_HOST;default=proxy.tunnel]",
    "smtp.port": "30465",
    "smtp.user": "$[env:EMAIL_USERNAME;default=myApiKey]",
    "smtp.password": "$[secret:EMAIL_PASSWORD]",
    "from.address": "noreply@wknd.site",
    "smtp.ssl": true,
    "smtp.starttls": false,
    "smtp.requiretls": false,
    "debug.email": false,
    "oauth.flow": false
}

可以使用以下任一方式为每个环境设置EMAIL_USERNAMEEMAIL_PASSWORD OSGi变量和密钥:

  • Cloud Manager环境配置

  • 或使用aio CLI命令

    code language-shell
    $ aio cloudmanager:set-environment-variables --programId=<PROGRAM_ID> <ENVIRONMENT_ID> --secret EMAIL_USERNAME "myApiKey" --secret EMAIL_PASSWORD "password123"
    
recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69