C# 为什么实际电子邮件的大小高于我的附件和文本大小?
我有一个简单的代码来发送带有附件的电子邮件:C# 为什么实际电子邮件的大小高于我的附件和文本大小?,c#,smtp,gmail,size,email-attachments,C#,Smtp,Gmail,Size,Email Attachments,我有一个简单的代码来发送带有附件的电子邮件: using (MailMessage mail = new MailMessage()) { using (SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com")) { mail.From = new MailAddress("my_mail@gmail.com")
using (MailMessage mail = new MailMessage())
{
using (SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"))
{
mail.From = new MailAddress("my_mail@gmail.com");
mail.Sender = new MailAddress("my_mail@gmail.com");
mail.To.Add("my_mail@gmail.com");
mail.Subject = "TEST";
mail.Body = "Test body message";
//Add attachment
System.Net.Mail.Attachment attachment;
attachment = new System.Net.Mail.Attachment("1568817207ComputationC.part1.rar"); //Size 24MB
mail.Attachments.Add(attachment);
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("my_mail@gmail.com", "password");
SmtpServer.EnableSsl = true;
SmtpServer.Timeout = 0;
SmtpServer.Send(mail);
}
}
我的附件大小为24MB+某些文本=最大25MB
我通过gmail收件箱中的“显示原始邮件”选项测量了邮件的实际大小,然后将此邮件下载到硬盘上
另外,当我测量我的应用程序发送电子邮件时发送的比特数时,它显示了33MB
所以,我的问题是,当我的附件+文本=最大25MB:D时,为什么这封电子邮件的实际大小是33MB?电子邮件附件使用base64编码从二进制格式(8位)编码为ASCII字符(7位)。因此,您不会在一个字节中使用所有8位,只使用7位,电子邮件大小会变大。因为您的电子邮件是-二进制数据会从8位数据更改为(通常)7位数据,以便在服务器之间可靠传输。有几种不同的编码方案,但它们通常会给电子邮件的大小增加33%的开销,因此25Mb的电子邮件实际上是32.5Mb的数据 编辑:对Base64编码有很好的解释,通常在发送电子邮件时使用: 每个输入字节的输出字节数约为4/3(33%的开销),对于大量字节,会收敛到该值。更具体地说,给定n个字节的输入,输出将为4[n/3]字节长,包括填充字符