Bonjour,

Débutante en C#, "ma programmation" est laborieuse.
Et après avoir passé plusieurs heures à chercher des tutos, sur les forums... un problème persiste!!!
Je m'explique.
Mon programme doit permettre d'envoyer un mail avec une pièce jointe (en C# avec Visual Studio Express).
Ce programme génère un .exe. Ensuite, via une autre application je devrais faire appel à cet exécutable en ayant pour paramètre (que je pourrais modifier) la pièce jointe, et le ou les destinataires. C'est pour cela que dans mon premier programme j'insiste sur le passage de paramètres. Seulement, lors de son exécution, j'obtiens une erreur disant que l'index est en dehors du tableau...

Voici mon code:

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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using System;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.Threading;
using System.ComponentModel;
namespace Examples.SmptExamples.Async
{
    public class SimpleAsynchronousExample
    {
 
        static bool mailSent = false;
        private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
        {
            // Get the unique identifier for this asynchronous operation.
            String token = (string)e.UserState;
            if (e.Cancelled)
            {
                Console.WriteLine("[{0}] Send canceled.", token);
            }
            if (e.Error != null)
            {
                Console.WriteLine("[{0}] {1}", token, e.Error.ToString());
            }
            else
            {
                Console.WriteLine("Message sent.");
            }
 
            mailSent = true;
        }
 
        public static void Main(string[] args)
        {
            string dest;
            string pj;
            dest = "...";
            pj= "...";
 
         if (args.Length <= 0)
           {
                EnvoyerMail(ref dest, ref pj);
         }
 
        }
 
 
        public static void EnvoyerMail(ref string dest, ref string pj)
        {
       string chemin = @"..." ;
 
 
            SmtpClient client = new SmtpClient();
            client.Host = "...";
            client.Credentials = new NetworkCredential("...", "...");
 
 
            MailAddress from = new MailAddress("...",
               "..." + (char)0x20 + " ...", System.Text.Encoding.UTF8);
                     MailAddress to = new MailAddress("...", dest);
 
            MailMessage message = new MailMessage(from, to);
 
            message.Body += "Ci-joint, ... ";
            message.BodyEncoding = System.Text.Encoding.UTF8;
            message.Subject = "Envoi Automatique d'une pièce jointe";
            message.SubjectEncoding = System.Text.Encoding.UTF8;
            message.Attachments.Add(new Attachment(chemin + pj));
                      client.SendCompleted += new
            SendCompletedEventHandler(SendCompletedCallback);
                      string userState = "test message1";
            client.SendAsync(message, userState);
            Console.WriteLine("Sending message... press c to cancel mail. Press any other key to exit.");
            string answer = Console.ReadLine();
                       if (answer.StartsWith("c") && mailSent == false)
            {
                client.SendAsyncCancel();
            }
                     message.Dispose();
                    }
    }
}
En vous remerciant d'avance, et en espérant résoudre ce facheux problème ^^