如何使用c# windows应用程序发送大文件

本文关键字:文件 应用程序 何使用 windows | 更新日期: 2023-09-27 18:14:51

我正在开发一个windows应用程序,我需要通过电子邮件发送一些文件作为附件。

public string SendMail(string mFrom,
        string mPass,
        string mTo,
        string mSub,
        string mMsg,
        string mFile,
        bool isDel)
    {
        string sql = "";
        try
        {
            System.Net.Mail.MailAddress mailfrom = new System.Net.Mail.MailAddress(mFrom);
            System.Net.Mail.MailAddress mailto = new System.Net.Mail.MailAddress(mTo);
            System.Net.Mail.MailMessage newmsg = new System.Net.Mail.MailMessage(mailfrom, mailto);
            newmsg.IsBodyHtml = false;
            if (mFile.Length > 2
                && File.Exists(mFile))
            {
                System.Net.Mail.Attachment att = new System.Net.Mail.Attachment(mFile);
                newmsg.Attachments.Add(att);
            }
            newmsg.Subject = mSub;
            newmsg.Body = mMsg;
            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com", 587);
            smtp.UseDefaultCredentials = false;
            smtp.Credentials = new System.Net.NetworkCredential(mFrom, mPass);
            smtp.EnableSsl = true;
            smtp.Send(newmsg);
            newmsg.Dispose();
            GC.Collect();
            sql = "OK";
            if (isDel
                && File.Exists(mFile))
            {
                File.Delete(mFile);
            }
        }
        catch (Exception ex)
        {
            sql = ex.Message;
        }
        return sql;
    }

此代码适用于小文件。但是我需要发送1-2 GB的大文件。

如何使用c# windows应用程序发送大文件

您不能使用电子邮件来传递这些文件,这与您的代码无关。

我认为没有任何提供程序会支持发送这种大小的文件,更不用说接收它们了。即使是G-Mail也有25mb的限制,这已经很大了。

电子邮件不是做这件事的合适渠道。

所以问题不在你的代码中,提供者会限制附件的大小,当你给他们一个更大的文件时拒绝他们。您将收到一封从您的FROM地址返回的电子邮件,说明文件太大,您的电子邮件没有通过。

我同意Gerald Versluis的观点,电子邮件不是解决这个问题的合适渠道。即使你使用的是自己的可配置的电子邮件服务器,也可能存在一些内部限制,阻止它发送如此大的文件。

我会选择FTP,但如果你真的想继续使用电子邮件,我建议你先检查以下内容。

  • 服务器上是否有连接超时属性?如果是,试着增加到3小时或类似的时间。
  • 邮件服务器上有足够空间吗?
  • 你的邮件服务器有文档吗?还有关于附件大小的其他细节吗?