当发送zip文件大小为19mb的电子邮件时,它不发送电子邮件?

时间:2013-08-08 14:28:41

标签: c# winforms gmail

这是我的新班级:

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

我在Form1中使用此方法,如下所示:

se.SendPhotos(outputtext+"\\"+"textfiles.zip");
se.SendPhotos(outputphotos + "\\" + "photofiles.zip");

第一次,它在zip文件中发送一些文本文件的压缩文件大约是5kb 发送zip文件没问题。

然后它发送一个19mb的zip文件,里面有一些图像/照片,每张照片约7.55mb 这次zip文件永远不会收到我的电子邮件。

我得到的文本文件的第一个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?

3 个答案:

答案 0 :(得分:1)

尝试发送一个简单的文本文件来审核您的解决方案即使有效。如果通过,那么您的ISP可能正在过滤。有些ISP有5mb的限制。另外,请确保您只有拉链中的图片。如果你有任何exes等,那些可以被阻止。检查垃圾邮件文件夹。

但实际上,请确保文本附件通过。

答案 1 :(得分:1)

对于添加的问题(在Edit中),您可以使用以下代码获取所需的所有文件:

 string[] extensions = {"*.bmp","*.jpg","*.png", "*.gif" };//add extensions you want to filter first
 var filenames = extensions.SelectMany(x => Directory.GetFiles(s, x));

希望它有所帮助。

答案 2 :(得分:0)

附件只包含照片和文本文件,Google会打开zip文件并检查您是否附加了任何可能存在危险的内容( .exe,.bat等。

或者,您可以在zip文件中发送zip文件。 (有关无法通过Gmail发送的内容的完整列表,请参阅here

我认为无论如何您违反发送条件,SMTP请求都会被隐式拒绝。

照片zip文件只是照片吗?我尝试在线查看Gmail是否确实对SMTP请求实施了进一步的限制,但找不到任何内容......