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

时间:2013-05-22 06:32:27

标签: c# winforms email large-files

我正在开发一个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的大文件。 为此做什么。

2 个答案:

答案 0 :(得分:5)

您无法使用电子邮件获取这些文件,这与您的代码无关。

我认为 ANY 提供商并不支持发送该大小的文件,更不用说接收它们了。即使G-Mail也有25 Mb的限制,这已经非常大了。

电子邮件不适合这样做。

因此,问题不在您的代码中,提供程序将限制附件的大小,并在您使用更大的文件呈现时拒绝它们。您将在您的FROM地址收到一封电子邮件,说明该文件太大而且您的电子邮件没有收到。

要以最简单的形式执行此操作,请查看FTP。

答案 1 :(得分:2)

我同意Gerald Versluis的意见,因为电子邮件不适合这个。即使您使用自己的可配置电子邮件服务器,也可能存在一些内部限制,无法发送此类大文件。

我会选择使用FTP,但如果您真的想继续发送电子邮件,我建议您先检查一下。

  • 服务器上是否有连接超时属性?如果是,那么尝试将其增加到3小时或类似的东西。
  • 邮件服务器上是否有足够的空间?
  • 您的电子邮件服务器是否有一些文档?是否有关于附件尺寸的其他详细信息?