J'essaie d'envoyer un grand nombre d'emails en utilisant SmtpClient.SendMailAsync méthode. Voici ma méthode de test que j'appelle depuis l'application console simple.
static void Main(string[] args)
{
SendMailsOnebyOneAsync().GetAwaiter().GetResult();
}
public static async Task SendMailsOnebyOneAsync()
{
for (int i = 0; i < 1000; i++)
{
try
{
using (SmtpClient sMail = new SmtpClient("XXX"))
{
sMail.DeliveryMethod = SmtpDeliveryMethod.Network;
sMail.UseDefaultCredentials = false;
sMail.Credentials = null;
var fromMailAddress = new MailAddress("XXX");
var toMailAddress = new MailAddress("XXX");
MailMessage message = new MailMessage(fromMailAddress, toMailAddress)
{
Subject = "test"
};
await sMail.SendMailAsync(message);
Console.WriteLine("Sent {0}", i);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
Parfois la méthode est suspendue - elle attend de SendMailAsync qui semble bloqué et ne revient pas.
Je vois une question connexe SendMailAsync de SmtpClient n'est parfois jamais retourné . Mais il n'y a pas de solution proposée qui fonctionne pour moi.
Quand j'ai essayé d'utiliser la méthode synchrone SmtpClient.Send tout est OK et l'application ne se bloque jamais.
Quelqu'un a-t-il une idée de ce qui ne va pas ?