메일을 보내려고하지만 작업이 취소됩니다. 왜 그런가? 사전에 어떤 도움SMTP 보내기 메일 취소
using(SmtpClient smtpClient = new SmtpClient())
{
return smtpClient.SendAsync(msg);
}
감사 :
public static Task SendAsync(this SmtpClient client, MailMessage message)
{
TaskCompletionSource<object> tcs = new TaskCompletionSource<object>();
Guid sendGuid = Guid.NewGuid();
SendCompletedEventHandler handler = null;
handler = (o, ea) =>
{
if (ea.UserState is Guid && ((Guid)ea.UserState) == sendGuid)
{
client.SendCompleted -= handler;
if (ea.Cancelled)
{
tcs.SetCanceled(); // TASK CANCELLED: Why?
}
else if (ea.Error != null)
{
tcs.SetException(ea.Error);
}
else
{
tcs.SetResult(null);
}
}
};
client.SendCompleted += handler;
client.SendAsync(message, sendGuid);
return tcs.Task;
}
에 의해 호출! Gerard
당신이 코드를 디버깅 시도? –
네,하지만 아직 단서가 없습니다. 그것은 몇몇 우편물을 위해 잘 일하고, 그러나 오늘부터 우편물은 취소된다. – Gerard
문제는 Using 문으로 인해 발생합니다. 작업을 완료하기 전에 smtp-client가 범위를 벗어난 것 같아서 작업을 취소하는 것처럼 보입니다. Using 문을 사용하지 않으면 코드가 제대로 실행됩니다. – Gerard