【问题标题】:Get email attachment size in asp.net在 asp.net 中获取电子邮件附件大小
【发布时间】:2011-07-11 02:46:37
【问题描述】:

有什么方法可以知道在 asp.net c# 中通过电子邮件发送的附件的大小?

谢谢!

【问题讨论】:

  • 电子邮件是如何发送的?附件是如何添加到邮件中的?
  • 我讨厌逻辑答案为“是”的问题。
  • @Lazarus:让我知道它是“是”吗?
  • @James:电子邮件是通过常规电子邮件代码发送的。我应该发布代码吗?
  • @Xor:之所以“是”是因为您可以“知道附件的大小”。遵循此处的一般线程,您应该发布您的代码,以便我们了解您尝试从何处获取此信息的一些线索,然后我们可以将“是”缩小为更具体的示例。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    您需要做的是确定附件的长度(如 Stream.Length、byte[] 长度或文件长度),然后将其除以 0.75。

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

    【讨论】:

    • 这个数字是一个近似值,因为base64 版本应该始终是 4 个字节的倍数。将其调整到计算中并不难;向上填充到下一个偶数 4 个字节。此外,对于电子邮件,base64 的大约每 68 个字符将有一个换行(如果您有 CRLF 行结尾,则为两个字节),这取决于您的 base64 编码器的配置和实现方式。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      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);

      【讨论】:

        猜你喜欢
        • 2014-05-12
        • 1970-01-01
        • 2020-11-06
        • 2012-08-23
        • 1970-01-01
        • 2012-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多