none
[Résolu]Comment mettre sous forme de class RRS feed

  • Question

  •  

    Bonjour,

     

    Je passe ici vous demander comme mettre mon code suivant (et par la meme occasion me corriger la fonction split qui fonctionne pas) sous forme de class pour l'utiliser ensuite dans ma form:

     

            public void sendMail(object sender, EventArgs e)
            {
                //Définitions des données
                string Froms = "yannick@bluesystem.ch";
                string Subjects = txtSujet.Text;
                string msgAttachs = txtAttach.Text;
                string Bodys = txtMsg.Text;
                MailMessage emailclient = new MailMessage();

                //Configuration
                emailclient.From = new MailAddress("" + Froms + "");
                emailclient.Subject = Subjects;
                emailclient.Body = Bodys;
                //Pièce jointe
                Attachment pieceJointeEmailClient = new Attachment(@"" + msgAttachs + "");
                emailclient.Attachments.Add(pieceJointeEmailClient);
                SmtpClient envoieEmailClient = new SmtpClient();
                envoieEmailClient.Host = "mail.bluewin.ch";
                envoieEmailClient.Credentials = new NetworkCredential("h.berthoud", "runner11");

                //envoie
                try
                {
                    string[] mesdestinaires = txtDestinataire.Text.Split(',');
                    int i = 0;

                    emailclient.To.Add(new MailAddress("" + mesdestinairesIdea + ""));

                    for (i = 0; i < mesdestinaires.Length; i++)
                    {
                        envoieEmailClient.Send(emailclient);
                    }

                    toolStripStatusLabel1.Text = "Email envoyé avec succès";
                    toolStripStatusLabel2.Text = "";
                }
                catch (SmtpException mesEx)
                {
                    MessageBox.Show("Erreur: " + mesEx.Message + " \nGetTypeErreur: " + mesEx.GetType() + " .");
                    toolStripStatusLabel1.Text = "";
                }
            }
      
      private void btnParcourir_Click(object sender, EventArgs e)
            {
                openFileDialog1.InitialDirectory = @"C:\";
                openFileDialog1.Title = "Selectionner un fichier";
                openFileDialog1.FileName = "";
                if (openFileDialog1.ShowDialog() != DialogResult.Cancel)
                {
                    txtAttach.Text = openFileDialog1.FileName;
                    toolStripStatusLabel1.Text = "Le fichier à été joint avec succès.";
                    toolStripStatusLabel2.Text = "";
                }
                else
                {
                    txtAttach.Text = "";
                    toolStripStatusLabel1.Text = "Le fichier n'a pu être joint.";
                    toolStripStatusLabel2.Text = "";
                }
            }

    jeudi 27 mars 2008 07:18

Réponses

  • Transformer ton bloc de code en classe ... Je ne pense pas qu'il y ait de proposition parfaite car ça dependra plutôt de ta façon de le voir.

     

    La seule suggestion c'est concernant les destinataires. Je le verrai bien sous form d'une property sur un string (ta valeur d'origine) et dont le set ferai le split et autres joyeusetés.

    J'ai pas de VS2008 installé ici sinon je pense qu'il y a de quoi s'amuser un peut avec les nouvelles properties histoire d'avoir un code simplifié. A l'occase peut être.

     

    Sinon concernant ton split je te proposerai de remplacer le contenu du try par ça:

    string[] mesdestinaires = txtDestinataire.Text.Split(',');

    for (i = 0; i < mesdestinaires.Length; i++)

    {

    emailclient.To.Add(new MailAddress("" + mesdestinairesIdea + ""));

    }

    envoieEmailClient.Send(emailclient);

    toolStripStatusLabel1.Text = "Email envoyé avec succès";

    toolStripStatusLabel2.Text = "";

     

    En effet tu parcours ton tableau pour ajouter chacun des destinataires et tu ne fais qu'un envoies à la fin.

     

    Sinon je te proposerai aussi de faire un replace (méthode de string) sur la chaine globale pour transformer les ; en , (je sais que perso il m'arrive souvent de mettre des , ou des ; indifféremment et mon outlook se débrouille avec)

     

    PS: au fait pense à marquer les réponses qui te conviennes (même si elle te font poser d'autres questions ), ça sera sympa pour ceux qui prennent le temps de te répondre.

    jeudi 27 mars 2008 08:12

Toutes les réponses

  • Transformer ton bloc de code en classe ... Je ne pense pas qu'il y ait de proposition parfaite car ça dependra plutôt de ta façon de le voir.

     

    La seule suggestion c'est concernant les destinataires. Je le verrai bien sous form d'une property sur un string (ta valeur d'origine) et dont le set ferai le split et autres joyeusetés.

    J'ai pas de VS2008 installé ici sinon je pense qu'il y a de quoi s'amuser un peut avec les nouvelles properties histoire d'avoir un code simplifié. A l'occase peut être.

     

    Sinon concernant ton split je te proposerai de remplacer le contenu du try par ça:

    string[] mesdestinaires = txtDestinataire.Text.Split(',');

    for (i = 0; i < mesdestinaires.Length; i++)

    {

    emailclient.To.Add(new MailAddress("" + mesdestinairesIdea + ""));

    }

    envoieEmailClient.Send(emailclient);

    toolStripStatusLabel1.Text = "Email envoyé avec succès";

    toolStripStatusLabel2.Text = "";

     

    En effet tu parcours ton tableau pour ajouter chacun des destinataires et tu ne fais qu'un envoies à la fin.

     

    Sinon je te proposerai aussi de faire un replace (méthode de string) sur la chaine globale pour transformer les ; en , (je sais que perso il m'arrive souvent de mettre des , ou des ; indifféremment et mon outlook se débrouille avec)

     

    PS: au fait pense à marquer les réponses qui te conviennes (même si elle te font poser d'autres questions ), ça sera sympa pour ceux qui prennent le temps de te répondre.

    jeudi 27 mars 2008 08:12
  • toutes vos réponses me conviennent, mais oki, je vais voir pour le faire Wink

     

    J'ai testé le code, il s'arrete sur emailclient.To.Add(new MailAddress("" + mesdestinatairesIdea + ""));

     

    avec l'erreur:

     

    "La chaîne spécifiée n'est pas de la forme requise pour une adresse de messagerie."

     

    Bien entendu, j'ai directement essayé le message multiple Wink

     

    jeudi 27 mars 2008 08:23
  • Quel est le contenu de la chaine mes destinataires[ i ] au moment du crash?

     

    jeudi 27 mars 2008 08:38
  • Comment je fais pour voir le contenu?

    jeudi 27 mars 2008 08:41
  • Ben au choix:

    - enlève le try comme ça il s'arrètera dessus (au moment de l'exception) puis en passant ta souris dessus tu vois la valeur (où en regardant dans la fenêtre "local" qui affiche les variables et leur contenu)

    - met un point d'arrêt (seul souci ici c'est que tu ne sais pas forcément sur lequel ça crashe)

    - met dans le catch de ton try des console.writeline

     

    Perso je ferai le premier (c'est loin d'être le plus propre mais en phase de construction/déboggage c'est le plus rapide) dans le cas présent (je garde les autres possibilités pour d'autres conditions en général).

     

     

     

    jeudi 27 mars 2008 09:07
  • Faute d'erreur ! C'était moi Wink L'erreur est corrigé.

     

    Humm... Je te demande -> Est-ce que je cré un nouveau poste pour mon autre problème ou alors j'éditerai ce poste?

     

    jeudi 27 mars 2008 09:17
  • Si c'est la continuation du problème courant oui mais comme je ne pense pas il vaut mieux que tu fasses un nouveau post. Ca permettra à ceux qui viendront par la suite (et aux moteurs de recherche) de mieux s'y retrouver je pense.

    A+ sur le nouveau post

     

    jeudi 27 mars 2008 09:39