C# 将Schema.org标记添加到电子邮件中,赢得';不影响gmail的收件箱,无论是在移动应用程序还是网络应用程序中

C# 将Schema.org标记添加到电子邮件中,赢得';不影响gmail的收件箱,无论是在移动应用程序还是网络应用程序中,c#,gmail,schema.org,smtpclient,C#,Gmail,Schema.org,Smtpclient,我可以使用C和System.Net.Mail.SmtpClient发送电子邮件,并使用Gmail作为我的smtp服务器。现在我想在我的电子邮件中添加标记。我希望看到它们影响电子邮件在谷歌产品中的显示方式。 我按照指示做了这件事,但没有成功。 我使用application/ld+json嵌入标记 以下是我生成电子邮件的方式: public static Task Main() { var mail = new MailMessage("mygmail@gmail.com", "mygmai

我可以使用
C
System.Net.Mail.SmtpClient
发送电子邮件,并使用Gmail作为我的smtp服务器。现在我想在我的电子邮件中添加标记。我希望看到它们影响电子邮件在谷歌产品中的显示方式。 我按照指示做了这件事,但没有成功。
我使用
application/ld+json
嵌入标记

以下是我生成电子邮件的方式:

public static Task Main()
{
    var mail = new MailMessage("mygmail@gmail.com", "mygmail@gmail.com");

    var client = new SmtpClient("smtp.gmail.com", 587);
    client.EnableSsl = true;
    client.Credentials = new System.Net.NetworkCredential("mygmail@gmail.com", "my password");

    mail.Subject = "fight confirmation";
    mail.IsBodyHtml = true;
    mail.Body = GetMailBody (); 
    await client.SendMailAsync (mail);
}
下面是my
GetMailBody()
方法:

public static string GetMailBody ()
{
    return @"
<html>
<body>
<script type=""application/ld+json"">
{
  ""@context"": ""http://schema.org"",
  ""@type"": ""EmailMessage"",
  ""potentialAction"": {
     ""@type"": ""ConfirmAction"",
    ""name"": ""Approve Expense"",
    ""handler"": {
      ""@type"": ""HttpActionHandler"",
      ""url"": ""https://myexpenses.com/approve?expenseId=abc123""
    }
  },
  ""description"": ""Approval request for John's $10.13 expense for office supplies""
}
</script>
Let me know if you're in.
</body>
</html>

        ";
}
公共静态字符串GetMailBody()
{
返回@”
{
“@context”:”http://schema.org"",
“@type”:“EmailMessage”,
“潜在作用”:{
“@type”:“confirmation”,
“名称”:“批准费用”,
“处理程序”:{
“@type”:“HttpActionHandler”,
“url”:”https://myexpenses.com/approve?expenseId=abc123""
}
},
“”说明“”:“”约翰10.13美元办公用品费用的批准申请“”
}
如果你在,请告诉我。
";
}
我希望在收件箱中看到一个按钮,如谷歌文档中所示:


但我的收件箱中的所有内容都是一样的,没有任何标记。

我花了几个小时测试了您的模式和代码

首先,一般来说,您的代码中没有问题,但这些按钮没有显示的主要原因是,我从不同的资源中了解到,这需要您自己的电子邮件通过DKIM或SPF签名,以便Gmail执行操作

检查这个,这个和这个都有相同的问题,提到相同的解决方案

此外,当您访问电子邮件白名单时,我将留下一些工具和资源链接,帮助您验证架构数据并继续:

最后,这可能与您的问题无关,但值得一提的是,这些操作按钮只呈现给Gmail所有者,而不是其他电子邮件客户端,这意味着如果您正在寻找更通用的方式来显示电子邮件中的按钮,可能只需普通html即可,下面是一个快速示例:

public static string GetMailBody()
{
    return @"
    <table width=""100%"" cellspacing=""0"" cellpadding=""0"">
      <tr>
        <td>Approval request for John's $10.13 expense for office supplies</td>
      </tr>
      <tr>
          <td>
              <table cellspacing=""0"" cellpadding=""0"">
                  <tr>
                      <td style=""border-radius: 2px;"" bgcolor=""#ED2939"">
                          <a href=""https://www.yourWebConfirmationLink.com"" target=""_blank"" style=""padding: 8px 12px; border: 1px solid #ED2939;border-radius: 2px;font-family: Helvetica, Arial, sans-serif;font-size: 14px; color: #ffffff;text-decoration: none;font-weight:bold;display: inline-block;"">
                              Confirm Your Order             
                          </a>
                      </td>
                  </tr>
              </table>
          </td>
      </tr>
    </table>
";
}
公共静态字符串GetMailBody()
{
返回@”
John 10.13美元办公用品费用的批准申请
";
}
这将提供: