C# 我可以将电子邮件标记为“电子邮件”吗;“高度重视”;是否使用System.Net.Mail查看Outlook?

C# 我可以将电子邮件标记为“电子邮件”吗;“高度重视”;是否使用System.Net.Mail查看Outlook?,c#,outlook,system.net.mail,C#,Outlook,System.net.mail,我为我的客户开发的应用程序的一部分涉及发送活动电子邮件。有时,这些是非常重要的。我的客户和我客户的大多数客户都使用Outlook,它能够将邮件标记为高度重要 现在,我知道,假设所有最终用户都将使用相同的界面是无情的,而我不是。但考虑到您可以将Outlook发送的电子邮件视为高度重要邮件,即使目标用户不一定是通过Outlook阅读邮件,这意味着基本上存储了一些数据,以某种方式让Outlook知道特定邮件是否被指定为高度重要邮件。至少这是我的解释 应用程序当前使用System.Net.Mail发送电

我为我的客户开发的应用程序的一部分涉及发送活动电子邮件。有时,这些是非常重要的。我的客户和我客户的大多数客户都使用Outlook,它能够将邮件标记为高度重要

现在,我知道,假设所有最终用户都将使用相同的界面是无情的,而我不是。但考虑到您可以将Outlook发送的电子邮件视为高度重要邮件,即使目标用户不一定是通过Outlook阅读邮件,这意味着基本上存储了一些数据,以某种方式让Outlook知道特定邮件是否被指定为高度重要邮件。至少这是我的解释

应用程序当前使用
System.Net.Mail
发送电子邮件,使用
System.Net.Mail.MailMessages
编写电子邮件,并使用
System.Net.Mail.SmtpClient
发送电子邮件。是否可以使用
System.Net.Mail
的功能设置此“高重要性”设置?如果没有,是否有可配置此设置的程序集?

您可以设置此设置


MailPriority.High
例如。

设置邮件消息的优先级属性。其值为正常值、低值或高值

非常晚编辑:正如@stefanstieger所指出的,优先级只保证对Outlook有效。在发布此问题/答案后的8年中,行业已确定将重要性标题作为首选方式


甚至后来的编辑:说明设置优先级实际上设置了三件事:XPriority头、Priority头和重要性头。因此,在任何邮件客户端中,使用Priority属性的行为都将与预期的一样,并将设置适当的头。

使用它-它对我有效

Dim mail As New MailMessage()
mail = New MailMessage()
mail.Priority = MailPriority.High
mail.Priority = MailPriority.Normal
mail.Priority = MailPriority.Low

仅仅因为Outlook将优先级视为重要性, 这并不意味着所有其他的电子邮件程序也会这样做

优先权和重要性不是一回事

正确答案是:

mail.Headers.Add("Importance", "High"); // High, normal, or low
值不区分大小写



在这里跳到很晚!优先级和重要性并不相同,但大多数开发人员都可以设置优先级和重要性。你怎么选择?RFC 4021,2.1.54将优先级定义为影响传输速度和传输的属性(“正常”、“紧急”和“非紧急”)。重要性在RFC 4021,2.1.52中定义为一种属性,是发起者向接收者提示消息的重要性(“高”、“正常”和“低”)

在我的使用案例中,我以Outlook用户为目标,并使用MimeKit构建电子邮件。重要性是大多数电子邮件客户端所关心的,因此我的代码可能是这样的:

using MimeKit;
var message = new MimeMessage();
message.Importance = MessageImportance.High;
我将转载施泰格的链接,因为他在:


创建邮件消息时,设置
message.Priority=MailPriority.High示例:优先级和重要性不是一回事。它们都存在于邮件中。@Stefanstieger重要性未作为上的属性记录,也未作为Intellisense中的可用属性显示。它被记录为可用的标题,但没有给出其他信息。同样,这个答案已经有8年历史了,所以框架类的状态在此期间可能很容易改变。正确的答案是:mail.Headers.Add(“重要性”,“高”);//High、normal或low-不区分大小写。@StefanSteiger,这是一个8岁的问题/答案。你的判断是基于一个在它被写出来后的5年内都不存在的东西。