如何使用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;
}
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的大文件。
您不能使用电子邮件来传递这些文件,这与您的代码无关。
我认为没有任何提供程序会支持发送这种大小的文件,更不用说接收它们了。即使是G-Mail也有25mb的限制,这已经很大了。
电子邮件不是做这件事的合适渠道。
所以问题不在你的代码中,提供者会限制附件的大小,当你给他们一个更大的文件时拒绝他们。您将收到一封从您的FROM地址返回的电子邮件,说明文件太大,您的电子邮件没有通过。
我同意Gerald Versluis的观点,电子邮件不是解决这个问题的合适渠道。即使你使用的是自己的可配置的电子邮件服务器,也可能存在一些内部限制,阻止它发送如此大的文件。
我会选择FTP,但如果你真的想继续使用电子邮件,我建议你先检查以下内容。
- 服务器上是否有连接超时属性?如果是,试着增加到3小时或类似的时间。
- 邮件服务器上有足够空间吗? 你的邮件服务器有文档吗?还有关于附件大小的其他细节吗?