C# 当发送zip文件大小为19mb的电子邮件时,是否不发送该电子邮件?
这是我的新班级上衣:C# 当发送zip文件大小为19mb的电子邮件时,是否不发送该电子邮件?,c#,winforms,gmail,C#,Winforms,Gmail,这是我的新班级上衣: MailMessage photosmessage; 这是我在新课程中使用的方法: public void SendPhotos(string fileNameToSend) { try { MailAddress from = new MailAddress("chocolade@gmail.com", "User " + (char)0xD8 + " Name",
MailMessage photosmessage;
这是我在新课程中使用的方法:
public void SendPhotos(string fileNameToSend)
{
try
{
MailAddress from = new MailAddress("chocolade@gmail.com", "User " + (char)0xD8 + " Name",
System.Text.Encoding.UTF8);
MailAddress to = new MailAddress("MyEimalOfMyInternet");
photosmessage = new MailMessage(from, to);
photosmessage.Body = "Please check the log file attachment i have some bugs.";
string someArrows = new string(new char[] { '\u2190', '\u2191', '\u2192', '\u2193' });
photosmessage.Body += Environment.NewLine + someArrows;
photosmessage.BodyEncoding = System.Text.Encoding.UTF8;
photosmessage.Subject = "Log File For Checking Bugs" + someArrows;
photosmessage.SubjectEncoding = System.Text.Encoding.UTF8;
Attachment myAttachment = new Attachment(fileNameToSend, MediaTypeNames.Application.Octet);
photosmessage.Attachments.Add(myAttachment);
SmtpClient docsend = new SmtpClient("smtp.gmail.com", 587);
docsend.SendCompleted += new SendCompletedEventHandler(docsend_SendCompleted);
docsend.EnableSsl = true;
docsend.Timeout = 10000;
docsend.DeliveryMethod = SmtpDeliveryMethod.Network;
docsend.UseDefaultCredentials = false;
docsend.Credentials = new NetworkCredential("gmailusername", "gmailpassword");
string userState = "test message1";
docsend.SendAsync(photosmessage, userState);
SendLogFile.Enabled = false;
}
catch (Exception errors)
{
Logger.Write("Error sending message :" + errors);
}
}
我在表格1中使用这种方法,如下所示:
se.SendPhotos(outputtext+"\\"+"textfiles.zip");
se.SendPhotos(outputphotos + "\\" + "photofiles.zip");
第一次发送压缩文件时,压缩文件中的一些文本文件的压缩文件大约为5kb
发送zip文件没有问题
然后它发送一个19mb的zip文件,里面有一些图像/照片,每个照片大约7.55mb
这一次,zip文件再也没有进入我的电子邮件
第一个压缩文件的文本文件,我得到它,但第二个我从来没有得到它。
我使用我的gmail电子邮件帐户将此文件发送到我的常规isp电子邮件帐户
我知道在gmail中你不能发送超过25mb的照片,但是照片的zip文件是19mb
还有什么原因使我没有得到第二个zip文件
编辑:
我想我知道问题出在哪里了。
在获取和创建文本文件的zip文件时,我做了一个过滤器“.txt”,但在使用照片zip文件时,我做了“*”所有文件:
string[] photosfiles = Directory.GetFiles(s, "*.*", SearchOption.AllDirectories);
结果是我在zip文件中有一个带有.ini的文件
如何筛选所有图像类型
string[] photosfiles = Directory.GetFiles(s, "*.jpg", SearchOption.AllDirectories);
这将仅适用于jpg文件,但如果我还想获得png或bmp?请尝试发送一个简单的文本文件来检查您的解决方案是否有效。如果通过,那么您的ISP可能正在进行过滤。一些ISP有5mb的限制。还要确保你的拉链里只有照片。如果你有任何exes ETC,这些可以被阻止。检查你的垃圾邮件文件夹
确实如此,只要确保文本附件通过即可 如果附件仅包含照片和文本文件,谷歌将打开zip文件,检查您是否未附加任何可能有潜在危险的内容(.exe、.bat等) 或者,您可以在zip文件中发送一个zip文件。(有关无法通过Gmail发送的内容的完整列表,请参阅) 我可以想象,在任何违反发送条件的情况下,SMTP请求都会被隐式拒绝 照片压缩文件只是照片吗?我尝试在线查看Gmail是否对SMTP请求实施了进一步的限制,但找不到任何内容…对于添加的问题(在您的
编辑中),您可以使用以下代码获取所需的所有文件:
string[] extensions = {"*.bmp","*.jpg","*.png", "*.gif" };//add extensions you want to filter first
var filenames = extensions.SelectMany(x => Directory.GetFiles(s, x));
希望有帮助。可能是ISP阻止了它?可能是我没想过。为什么我的isp会阻止zip文件?还是19mb太大了?我将奇怪地与他们核实一下。正如@cadrell0所说,您可能为此使用了错误的系统:始终希望涉及的任何服务器都会因为附件的大小或文件类型而拒绝附件。使用FTP。哪个帐户没有获取文件。谷歌还是你的ISP帐户?更新你的问题以澄清这一点。我的ISP没有得到第二个zip文件——更大的19mb。