【发布时间】:2014-04-22 21:09:43
【问题描述】:
我在我的 Windows Azure 环境中使用 SendGrid API 来发送电子邮件。我需要更改某些电子邮件的电子邮件优先级(低\高重要性),但我没有看到任何允许我这样做的属性。
有谁知道如何更改优先级的 SendGrid 经验?有一个属性可以让我添加标题.. 所以我不确定这是否可以用来执行此操作?
提前致谢!
【问题讨论】:
我在我的 Windows Azure 环境中使用 SendGrid API 来发送电子邮件。我需要更改某些电子邮件的电子邮件优先级(低\高重要性),但我没有看到任何允许我这样做的属性。
有谁知道如何更改优先级的 SendGrid 经验?有一个属性可以让我添加标题.. 所以我不确定这是否可以用来执行此操作?
提前致谢!
【问题讨论】:
如果您使用的是 Web API,您可以使用您提到的 headers 参数。如果通过 SMTP 发送,您只需将标头添加到您的邮件中。
在 RFC 4021 中定义了一些支持此功能的标头以及一些自定义标头。我将使用以下 JSON 作为 headers 参数开始:
{“Priority”: “Urgent”, “Importance”: “high”}
如果这不起作用,您还可以查看 X-Priority 和 X-MSMail-Priority 标头。
【讨论】:
我也在寻找一种将电子邮件标记为重要的方法。看了几篇文章后,我在这里找到了答案- https://github.com/sendgrid/sendgrid-csharp/issues/251
您需要做的就是在邮件标题中添加优先级。像这样-
mailMessage.Headers.Add("Priority", "Urgent");
mailMessage.Headers.Add("Importance", "high");
上面的代码适用于高优先级。我猜你必须为低优先级的电子邮件做类似的事情。希望这会有所帮助。
【讨论】:
根据我的测试,SmtpClient 将以下标头设置为高优先级:
"X-Priority", "1"
"Priority", "urgent"
"Importance", "high"
对于低优先级:
"X-Priority", "5"
"Priority", "non-urgent"
"Importance", "low"
【讨论】:
我发现使用Headers.Add 会引发Object reference not set to instance of an object error。
使用mailMessage.AddHeader 来避免这种情况。
在 Pallavi 提供的同一链接上找到。 https://github.com/sendgrid/sendgrid-csharp/issues/251
【讨论】: