确定电子邮件接收者是否为Outlook / Office 365来呈现可操作的消息

问题描述

我们正在向使用Outlook,Gmail和其他客户端的客户发送交易电子邮件。

我们希望有条件地仅向我们的Outlook / Office 365客户发送Actionable Messages(我们将向非Outlook用户发送完全不同的交易电子邮件),但是我们不确定如何确定收件人正在使用Outlook / Office 365而不是Gmail。

  • 是否可以在发送之前确定收件人的电子邮件客户端类型?
  • 如果没有,使用条件标签是否是在逻辑上显示可操作消息与回退其他电子邮件提供商的最佳方法?即<!--[if mso]><![endif]-->

我还注意到,Gmail有时会将带有<script>标签(可操作的消息所必需)的电子邮件标记为危险。我已经尝试仅像下面的示例那样为Office 365客户端呈现它们,但这不起作用:

<!--[if mso]>
  <script type="application/adaptivecard+json">
    {
        "$schema": "http://adaptivecards.io/schemas/adaptive-card.json","type": "AdaptiveCard","version": "1.0","originator": "","body": [
            {
                "size": "large","text": "Hello Actionable message","wrap": true,"type": "TextBlock"
            }
        ],"actions": [
            {
                "type": "Action.InvokeAddInCommand","title": "Open Actionable Messages Debugger","addInId": "3d1408f6-afb3-4baf-aacd-55cd867bb0fa","desktopCommandId": "amDebuggerOpenPaneButton"
            }
        ]
    }
  </script>
<![endif]-->

解决方法

您可以检查他们域的电子邮件是否由 Microsoft Exchange 处理。虽然这是不完美的(因为客户可能会使用其他电子邮件客户端来阅读他们的 Exchange 电子邮件),但似乎大多数拥有 Exchange 邮件服务器的客户都将使用 Outlook 或 Outlook.com/Outlook Web Access;相反,一些客户可能会使用 Outlook 来阅读他们的 IMAP 或 POP 电子邮件,但我们可以预期这些是少数。

Microsoft Exchange’s autodiscovery (docs) 应该允许您检测域的电子邮件是否由 Exchange 处理。

Microsoft 提供了一个 Office 365 Exchange DNS Connectivity Test,它显示了确定 Exchange 是否在域上运行所经历的步骤。您可以编写这些相同的步骤来为每个客户确定他们的域是否有 Exchange。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...