以下のコードを使用して、Windowsサービスを介して問題なくメールを送信しています。
public bool Send()
{
bool RetSt = false;
try
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress(_from);
for (int i = 0; i < _to.Count; i++)
mail.To.Add(_to[i]);
mail.Subject = _subject;
mail.Body = _body;
for (int i = 0; i < _attachmentList.Count; i++)
mail.Attachments.Add(_attachmentList[i]);
SmtpClient smtp = new SmtpClient();
smtp.Host = _smtpHost;
smtp.Port = _smtpPort;
smtp.Credentials = new NetworkCredential(_userName, _password);
smtp.EnableSsl = true;
smtp.Send(mail);
for (int i = 0; i < _attachmentList.Count; i++)
_ms[i].Dispose();
RetSt = true;
}
catch (Exception ex)
{
Service.WriteEventLog(ex.ToString(), EventLogEntryType.Error);
}
return RetSt;
}
Gmailの認証の問題により、サービス開始後約2〜3日はメールの送信を停止します。その問題の例外は次のとおりです。
"System.Net.Mail.SmtpException:SMTPサーバーに安全な接続が必要であるか、クライアントが認証されていません。サーバーの応答は次のとおりです。5.5.1認証が必要です。詳細については、System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCodestatusCode)を参照してください。 、文字列応答)at System.Net.Mail.MailCommand.Send(SmtpConnection conn、Byte []コマンド、MailAddress from、ブールallowUnicode)at System.Net.Mail.SmtpTransport.SendMail(MailAddress送信者、MailAddressCollection受信者、文字列deliveryNotify、ブールallowUnicode、SmtpFailedRecipientException&exception)at System.Net.Mail.SmtpClient.Send(MailMessage message)at MaintenanceService.Email.Send()in c:\ Users \ aydogan.ersoz \ Desktop \ Maintenanceservice \ trunk \ MaintenanceServiceTest \ Email.cs:line 75インチ
Gmailアカウントを管理すると、Gmailはキャプチャを要求します。キャプチャを正しく入力すると、Windowsサービスが再び正常に機能し始めます。
Googleのソリューションを試しましたが、うまくいきませんでした。
キャプチャ保護を無効にするにはどうすればよいですか、またはWebからキャプチャ文字列を入力せずにプログラムで電子メールを送信するために何かすることがありますか?