IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

probleme utilisation smtp.SendAsync


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 21
    Par défaut probleme utilisation smtp.SendAsync
    bonjour,

    pour l'envoi de message par mail j'utilise un formulaire web qui appel lors de la validation du message une méthode qui utilise smtp.SendAsync.

    mais celui ci n'envoie pas les mail et ne remonte aucune erreur.

    méthode pour l'envoi
    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
     
            public static void Envois(MailMessage message) {
     
                SmtpClient smtp = new SmtpClient();
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
     
                try {
                    smtp.SendCompleted += new SendCompletedEventHandler(smtp_SendCompleted);
                    String etat = "Envoi message";
                    smtp.SendAsync(message, etat);
     
                }
                catch (SmtpException ex) {
     
                    throw new Exception("Erreur envois mail ! " + ex.StatusCode);
                }
                finally {
                    message.Dispose();
                    smtp = null;
                }
            }
     
            private static void smtp_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) {
                // Get the unique identifier for this asynchronous operation.
                String token = (string)e.UserState;
     
                if (e.Cancelled) {
                    ResultatEnvois = String.Format("[{0}] envois mail annuler.", token);
                }
                if (e.Error != null) {
                    ResultatEnvois = String.Format("[{0}] {1}", token, e.Error.ToString());
                }
                else {
                    ResultatEnvois = "Mail envoyé";
                }
                mailEnvois = true;
            }
    Dans la méthode du click du bouton d'envois du formulaire j'instancie la class nécessaire a formaté le message pour l'envoi du mail.

    Au niveau du MailMessage tout est ok.

    donc je ne comprend pas

    merci

  2. #2
    Membre expérimenté Avatar de AJemni
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2008
    Messages : 242
    Par défaut
    Salut,
    defini ton server de messageri, ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    smtp.Host = "IPDeTonServeur";
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 21
    Par défaut
    pas besoin tout est dans le webconfig

  4. #4
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Si SendAsync veut dire asynchrone, pourquoi envoyer des emails selon ce mode? Que gagnes-tu?

    Personnellement, je vois au moins un soucis dans ta fonction: tu y invoques la méthode Dispose d'un objet qui est passé en argument. Cet argument a été instancié en dehors de la fonction. Ce n'est pas a cette fonction d'en disposer. Retire cet appel du finally et appel ta méthode Envois en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    using (MailMessage message = new MailMessage())
    {
        Envois(message);
    }
    Sinon:
    pas besoin tout est dans le webconfig
    Comment ton objet smtp trouve l'hote?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 21
    Par défaut
    salut

    effectivement le probleme est bien du au dispose dans le bloc finally, mais ca va cherché plus loin que ca.

    Pour ce qui est du passage de l'objet en argument c'est pas le probleme.

    Le veritable probleme vient effectivement que lors de l'appel asynchrone l'objet mailmessage est effectivement detruit et l'evenement remonte automatiquement, et je n'avais gerer cette option la.

    Et pour finalisé le tout ma page aspx doit contenir le parametre async="true" pour l'utilisation d'appel asynchrone.

    mon objet smtp est parametré de cette facon via le WebConfig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      <system.net>
        <mailSettings>
          <smtp from="AdresseParDefautDenvois@domaine.com">
            <network host="localhost" port="25" />
          </smtp>
        </mailSettings>
      </system.net>

  6. #6
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Je comprend pas trop si ton probleme est résolu ou pas.

    mon objet smtp est parametré de cette facon via le WebConfig
    Mais comment l'objet smtp récupère cette valeur? Si tu devais utiliser un autre serveur smtp que ton serveur local, comment ferais-tu?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. [DLL]Probleme utilisation DLL
    Par bubulle63 dans le forum Windows
    Réponses: 4
    Dernier message: 07/09/2006, 13h35
  2. probleme utilisation fonction split
    Par Lnmex dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/07/2006, 16h40
  3. probleme utilisation de iis
    Par seb833434 dans le forum IIS
    Réponses: 2
    Dernier message: 15/06/2006, 17h19
  4. Probleme utilisation d'Objets managé grace a gcroot
    Par pepefourras dans le forum MFC
    Réponses: 4
    Dernier message: 16/05/2006, 00h26
  5. Réponses: 4
    Dernier message: 29/07/2005, 11h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo