在.NET中计算电子邮件的大小

wog*_*les 7 c# asp.net email

假设我有一个具有以下属性的电子邮件类:

public string From { get; set; }
public string To { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
public Dictionary<string, byte[]> Attachments { get; set; }
Run Code Online (Sandbox Code Playgroud)

我需要计算电子邮件的大小,如果电子邮件小于10MB,则以其他方式将内容作为传真发送(以防止其从目的地退回).

我可以相对容易地计算附件的大小.

有没有准确的方法来计算整个电子邮件大小?我猜我需要添加字符串的大小以及将附加的任何标题信息?

GvS*_*GvS 12

您无法准确知道标头的大小.由于将邮件传递到下一个服务器的所有服务器都可能会向标头添加一些数据.这可以从一个简单的行到垃圾邮件扫描的完整分数.

所以你总是会把它弄错几个字节.

至于附件的大小:它们是编码的,因此nr的字节不是实际的大小.如果您将它们转换为Base64并获取该字符串的长度,那就是它们将在电子邮件中占用的大小(没有附件标题,具体取决于附件名称).估计值是nr的字节*1.33.

你可以得到一个很好的线索,如果邮件接近10 MB,但是当最终和收到的邮件正好是10 MB时,不知道.

  • +1 ......你甚至无法确定你的目的地是否假设10 MB = 10240 Kb或10 MB = 10000 Kb. (5认同)