Mailkit을 사용하여 SMTP를 통해 이메일을 보내는 방법에 대한 좋은 예제가 있습니다.Mailkit 비동기 SMTP를 보내고 검사하는 방법
client.Authenticate(theSMTPUsername,theSMTPPassword);
client.SendAsync(emailMessage);
client.Disconnect(true);
그러나, 내가 알고 싶은 것이 비동기 전송이 완료되면, 또는 경우 : 일반적으로 끝나는
: 비동기가 필요한 경우
client.Authenticate(theSMTPUsername,theSMTPPassword);
client.Send(emailMessage);
client.Disconnect(true);
그러나이 좋지 않습니다 성공하지 못한다. .NET 기본 라이브러리에서는 콜백 (이벤트 핸들러)을 사용합니다.
MailKit SendAsync에 대해 'Completed'콜백 처리기를 정의하고 성공했는지 여부를 알아내는 것이 가장 좋은 방법이 아닌지를 정의 할 수 있습니까? 당신은 다음과 같은 코드를 가지고 싶지 않아
감사
감사합니다 : 당신이 연결할 수있는 MessageSent 이벤트입니다. 콜백이 더 좋을 것 같습니다. – Hughgo
조금 더 가까이에서 보면 해결책이 효과가 있다는 것을 확신하지 못했습니다. 비동기 호출을 기다리는 중 비동기 부분이 반환 될 때까지 대기합니다. 메시지를 보낼 때까지 기다리지 않습니다. 위의 코드는 경주가 가능하며 작업이 완료되기 전에 연결을 끊을 수 있습니다. 더 나은 방법은 * synchronous * API를 기다리는 것입니다. 이렇게하면 진행하기 전에 각 단계가 완료됩니다. – Hughgo
'client.Send()'가 반환되면, 메시지가 전송 될 것입니다. 마찬가지로,'await client.SendAsync()'후에 제어가 다시 시작되면 메시지가 전송됩니다. 경주는 없을 것입니다. 동기 API를 '대기'할 수 없습니다. – jstedfast