这是我的新班级:
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?
答案 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请求实施了进一步的限制,但找不到任何内容......