backgroundworkerdowork イベントの Form1 で、次のことを行いました。
se.SendPhotos(photofilesDir + "\\" + "photofiles.zip");
se.SendPhotos(photofilesDir1 + "\\" + "photofiles.zip");
se.SendPhotos(photofilesDir2 + "\\" + "photofiles.zip");
se.SendPhotos(photofilesDir3 + "\\" + "photofiles.zip");
se クラス SendEmail で私がした:
public void SendPhotos(string fileNameToSend)
{
try
{
MailAddress from = new MailAddress("test@gmail.com", "User " + (char)0xD8 + " Name",
System.Text.Encoding.UTF8);
MailAddress to = new MailAddress("test@test");
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 photossend = new SmtpClient("smtp.gmail.com", 587);
photossend.SendCompleted += new SendCompletedEventHandler(photossend_SendCompleted);
photossend.EnableSsl = true;
photossend.Timeout = 10000;
photossend.DeliveryMethod = SmtpDeliveryMethod.Network;
photossend.UseDefaultCredentials = false;
photossend.Credentials = new NetworkCredential("usern", "userpass");
string userState = "test message1";
photossend.SendAsync(photosmessage, userState);
SendLogFile.Enabled = false;
fname = fileNameToSend;
}
catch (Exception errors)
{
Logger.Write("Error sending message :" + errors);
}
}
private void photossend_SendCompleted(object sender, AsyncCompletedEventArgs e)
{
photosmessage.Dispose();
if (fname == @"C:\Users\Simbalip\AppData\Local\outputphotos\photosfiles3" + "\\" + "photofiles.zip")
{
photossendended = true;
}
}
backgroundworker の問題は、最後の photofilesDir3 を送信しないことです。私はブレークポイントを使用し、次のようになりました: photossendended = true; しかし、私の電子メールでは、4 ではなく 3 つのファイルしか送信されていません。
バックグラウンドワーカーでブレークポイントを使用して F11 を実行すると、待機せずに 4 つの送信が 1 つずつ行われていることがわかりました。
photofiles.zip には毎回異なるファイルが含まれています。ここで、行にブレークポイントを作成したことを確認します。
if (fname == @"C:\Users\Simbalip\AppData\Local\outputphotos\photosfiles3" + "\\" + "photofiles.zip")
そして、それがそこに到達すると、常に真になります == fname never C:\Users\Simbalip\AppData\Local\outputphotos\photosfiles2 または 1 または photosfiles
しかし、最終的には3つの異なるphotofiles.zipファイルを取得し、それぞれに異なるファイルが含まれていますが、ファイルの1つは送信されませんでした。
Myabe 私は、電子メールを送信するときに、最初の電子メールが送信されるまで何らかの形で次の電子メールを送信するようにする必要があります。