在asp.net中获取电子邮件附件大小

时间:2011-03-08 13:13:02

标签: c# asp.net visual-studio email smtp

有没有办法知道asp.net c#中电子邮件中发送的附件大小?

谢谢!

4 个答案:

答案 0 :(得分:6)

如果您正在使用System.Net.Mail并通过Attachment类附加文件,那么每个附件都应该包含一个包含实际文件的ContentStream属性。此类型Stream的属性具有Length属性(类型为long),它以字节为单位给出文件的大小。

答案 1 :(得分:1)

通常,附件是在System.Net.Mail中进行base64编码的。 base64编码占用3个字节,并将它们转换为4个字节。

您需要做的是确定附件的长度(Stream.Length,byte [] length或File length),然后除以.75。

这将为您提供附件的大小,为SMTP编码base64。

答案 2 :(得分:0)

我相信你可以使用HttpFileCollection类。它使您可以访问客户端上传的所有文件。 这是msdn link

答案 3 :(得分:0)

Attachment.ContentDisposition.Size将给出附件大小(以字节为单位)

string smtpClientHost = "mymailsender.example.com";
string emailAddressFrom = "noreply@example.com";

MailMessage mailMessage = new MailMessage {
  From = new MailAddress(strEmailAddressFrom)
};

mailMessage.To.Add(new MailAddress("examplerecipient@anotherdomain.com"));

mailMessage.Body = "Email body content here...";

mailMessage.Subject = "An important subject...";

foreach(var attachment in attachments)
    if (attachment.ContentDisposition.Size < ByteSize.FromMegaBytes(1).Bytes) 
        mailMessage.Attachments.Add(attachment);

SmtpClient smtpClient = new SmtpClient(strSmtpClientHost);

smtpClient.Send(mailMessage);