Bonjour,

j'essaye d'envoyer mes mails de facon asynchrone. Pour cela j'ai ecrit le code suivant.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/// <summary>
        /// Envoye le mail
        /// </summary>
        /// <param name="corps"></param>
        /// <returns></returns>
        public bool Envoye(string corps)
        {
 
 
            MailMessage message = new MailMessage();
            message.From = new MailAddress(Expediteur);
            message.Subject = Sujet;
            message.Body = corps;
            message.Priority = MailPriority.High;
 
            foreach (string dest in Destinaires)
            {
                message.CC.Add(dest);
 
            }
 
            SmtpClient client = new SmtpClient(Urlsmtp, Port);
 
            client.Credentials = CredentialCache.DefaultNetworkCredentials;
 
            client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
 
            client.SendAsync(message, string.Empty );
 
            try
            {
               // client.Send(message);
 
                //client.SendAsync(message, null);
            }
            catch (Exception ex)
            {
                EnregistreEvenement monevent = new EnregistreEvenement();
                monevent.EEecrire("Erreur envoye mail" + ex.ToString());
                return false;
            }
 
            return true;
        }
 
        /// <summary>
        /// Gestion envoye mail de facon asynchrone
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                EnregistreEvenement monevent = new EnregistreEvenement();
                monevent.EEecrire("Erreur envoye mail" + e.Error.ToString());
            }
            else
            {
                EnregistreEvenement monevent = new EnregistreEvenement();
                monevent.EEecrire("envoye mail" + e.Error.ToString());
            }
        }
Quand j'utilse client.Send(message); les messages sont transmis sans probleme.

Par contre des que j'essaye client.SendAsync(message, string.Empty ); ca ne marche plus et je leve l'exception suivante:



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Description*:
Cree le 10/12/2008 17:25:47 10/12/2008 17:25:47 Erreur envoye mailSystem.Net.Mail.SmtpException: Échec d'envoi du courrier. ---> System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
   à System.Net.Mail.Message.BeginSend(BaseWriter writer, Boolean sendEnvelope, AsyncCallback callback, Object state)
   à System.Net.Mail.SmtpClient.SendMailCallback(IAsyncResult result)
   --- Fin de la trace de la pile d'exception interne ---
 
Pour plus d'informations, consultez le centre Aide et support à l'adresse http://go.microsoft.com/fwlink/events.asp.
Et la franchement je bloque je vois pas de quel objet il parle... :s

Merci d'avance pour votre aide