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 :

envoi par mail d'une page aspx


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Points : 21
    Points
    21
    Par défaut envoi par mail d'une page aspx
    Bonjour à tous,

    Tout d'abord je vais vous exposer la situation. J'ai une page accueil.aspx.vb où je lis un fichier pour mettre à jour une table de ma BDD lorsque l'utilisateur clique sur un bouton pour importer ce fichier.

    Lors du click sur ce bouton, je souhaite envoyer une page mail.aspx par mail qui lit des informations dans ma BDD mis à jour et bien sûr met en forme la page.

    En entrant un peu plus dans les détails, lors de la lecture du fichier importé dans la page accueil.aspx.vb, une clé est lue, et elle est passée en variable de session à la page mail.aspx pour que cette dernière lit les informations en fonction de cette clé. Actuellement, deux fonctions sont rattachées à la page mail.aspx.vb. Une fonction qui initialise toutes les variables et une autre qui appelle cette fonction au chargement de la page.

    Mon problème est que je ne sais pas comment faire pour envoyer l'intégralité d'une page aspx par mail.

    Pourriez-vous m'orienter sur la méthode à employer, me donner un exemple ou tout autre chose qui pourrait m'être utile, svp ?

    Merci d'avance.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 110
    Points
    110
    Par défaut
    Bonjour,

    Pour envoyer un mail en Asp.net :
    http://webman.developpez.com/article.../email/csharp/.

    Dans ton cas tu peut te baser sur le lien. Et pour envoyer l'intégralité de ta page il faut récupérer le contenu de ta page dans une chaine de caractère comme suit :
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim uri as New Uri("http://www.microsoft.com/default.aspx");If(uri.Scheme == uri.UriSchemeHttp) Then
    Dim request as HttpWebRequest = HttpWebRequest.Create(uri)
    request.Method = WebRequestMethods.Http.Get
    Dim response As HttpWebResponse = request.GetResponse()
    Dim reader As New StreamReader(response.GetResponseStream())
    Dim tmp As String = reader.ReadToEnd()
    response.Close()
    End If
    Il ne te reste qu'a recuperer la chaine de réponse "tmp" et de faire :
    Voilà le tour est joué.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Merci bien pour ta réponse.

    je venais de faire quelque chose de similaire. J'ai testé ta solution, ça fonctionne très bien aussi.

    Le souci maintenant, c'est que mes variables dans la page mail.aspx.vb ne se chargent pas car elles sont mises dans l'évènement page_load.

    Sauriez-vous quel évènement dois-je utiliser pour que cela fonctionne ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 110
    Points
    110
    Par défaut
    Si tu passe correctement tes variables en session ou dans l'url etc .... ca doit fonctionner

    Par contre juste comme ça c'est un peu difficile de voir ou ca bloque ....

    Si tu montre un peu de code ca peut résoudre le souci

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Au temps pour moi, j'avais fait une petite erreur dans mes tests

    Donc cela fonctionne bien.

    Mais par contre, un problème subsiste. Dans ma page aspx, j'ai une image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:Image ID="img_debut" runat="server" ImageUrl="/img/debut.jpg"/>
    Or je voudrais qu'elle apparaisse dans le mail mais pour l'instant, ce n'est pas le cas.

    j'ai joint l'image comme ceci à l'email.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mail.Attachments.Add(New Attachment(Server.MapPath("img") & "\" & "debut.jpg"))
    Quel chemin dois-je mettre dans la balise image ou comment dois-je m'y prendre svp ?

    Merci d'avance

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 110
    Points
    110
    Par défaut
    MailAttachment sert à mettre des pièces jointes pas à mettre l'image à l'intérieur du mail

    Voilà comment procéder :

    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
     
    using System.Net.Mail;
     
    string htmlBody = "<html><body><h1>Picture</h1><br><img src=\"cid:Pic1\"></body></html>";
    AlternateView avHtml = AlternateView.CreateAlternateViewFromString
        (htmlBody, null, MediaTypeNames.Text.Html);
     
    // Create a LinkedResource object for each embedded image
    LinkedResource pic1 = new LinkedResource("pic.jpg", MediaTypeNames.Image.Jpeg);
    pic1.ContentId = "Pic1";
    avHtml.LinkedResources.Add(pic1);
     
     
    // Add the alternate views instead of using MailMessage.Body
    MailMessage m = new MailMessage();
    m.AlternateViews.Add(avHtml);
     
    // Address and send the message
    m.From = new MailAddress("rizwan@dotnetplayer.com", "Rizwan Qureshi");
    m.To.Add(new MailAddress("shayan@dotnetplayer.com", "Shayan Qureshi"));
    m.Subject = "A picture using alternate views";
    SmtpClient client = new SmtpClient("smtp.dotnetplayer.com");
    client.Send(m);
    Bon courage

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    merci, l'ajout d'image fonctionne très bien

    juste une petite question sur ça, peut-on donner un nom à l'image car dans le mail, son nom est "noname" en pièce jointe. J'ai essayé de mettre un id comme ça mais sans succès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim avHtml As AlternateView = AlternateView.CreateAlternateViewFromString("<img id=test src=cid:test>", Nothing, "text/html")
    enfin au pire, ce n'est pas très grave, ce qui me dérange plus, c'est que j'ai une erreur que je n'avais pas avant, je ne sais pas trop pourquoi.

    L'erreur 500 apparaît à cette ligne en mode debug :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim response As HttpWebResponse = request.GetResponse()
    Apparemment, cela vient soit du code soit du serveur. Or ça fonctionnait bien avant, alors je suppose que ça vient de mon code mais je ne vois pas où elle pourrait se situer.

    En ce qui concerne mon code, j'ai une fonction mail qui appelle une fonction page qui me renvoie la page souhaitée, en l'occurence mail.aspx.

    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
    Function mail() As Boolean
            Dim email As New MailMessage()
            Dim Adr As New MailAddress("destinataire@orange.fr")
            Dim client As New SmtpClient 
            Dim mail As String = "expediteur@orange.fr"
     
            Dim avHtml As AlternateView = AlternateView.CreateAlternateViewFromString("<img src=cid:test>" & page(), Nothing, "text/html")
            Dim test As LinkedResource = New LinkedResource(Server.MapPath("img") & "\" & "test.jpg")
            test.ContentId = "test"
            avHtml.LinkedResources.Add(test)
            email.AlternateViews.Add(avHtml)
     
            client.Host = "smtp.orange.fr"
            email.From = Adr
            email.To.Add(mail)
            email.Subject = "sujet"
            email.IsBodyHtml = True
            connexion.Close()
             client.Send(email)
        End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function page()
      Dim tmp as String = "" 
      Dim uri as New Uri("http://www.microsoft.com/default.aspx")
      If(uri.Scheme == uri.UriSchemeHttp) Then
        Dim request as HttpWebRequest = HttpWebRequest.Create(uri)
        request.Method = WebRequestMethods.Http.Get
        Dim response As HttpWebResponse = request.GetResponse()
        Dim reader As New StreamReader(response.GetResponseStream())
        Dim tmp As String = reader.ReadToEnd()
        response.Close()
      End If
      Return tmp
    End Function
    Pouvez vous m'aiguiller svp ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 110
    Points
    110
    Par défaut
    Je t'avoue je connait pas bien VB.Net.
    Par contre il me semble qu'il te manque un type de retour et dans ton cas c'est As String a ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Function page() As String
      Dim tmp as String = "" 
      Dim uri as New Uri("http://www.microsoft.com/default.aspx")
      If(uri.Scheme == uri.UriSchemeHttp) Then
        Dim request as HttpWebRequest = HttpWebRequest.Create(uri)
        request.Method = WebRequestMethods.Http.Get
        Dim response As HttpWebResponse = request.GetResponse()
        Dim reader As New StreamReader(response.GetResponseStream())
        Dim tmp As String = reader.ReadToEnd()
        response.Close()
      End If
      Return tmp
    End Function

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    ah oui merci, mais c'est juste un oubli dans la recopie du code, il est bien dans mon code source

    Pas d'idée sur l'origine de l'erreur ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 110
    Points
    110
    Par défaut
    Peut-etre que l'url que tu utilise n'est pas bonne !!

    Pour test : essaye de prendre l'url que tu utilise dans ta fonction "page() " et utilise toi un Navigateur directement histoire de tester si l'url que tu utilise est bonne !!! Je pense que l'erreur vient de là ....

    Pour moi je vois d'autre raisons ....

    Bon courage

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    haa merci bien ! tu m'as aidé à trouver mon erreur.. C'est bête, j'avais modifié des données dans ma page aspx et j'avais une erreur dedans ! J'avais regardé partout sauf là -_-

    Merci pour toute l'aide que tu m'as apporté

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 110
    Points
    110
    Par défaut
    N'oublie pas de passer le post à

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoi de mail d'une page aspx
    Par Erebas dans le forum ASP.NET
    Réponses: 6
    Dernier message: 14/04/2011, 15h44
  2. Envoi par mail d'une page html (dans corps de texte)
    Par Lili120 dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 04/02/2011, 09h08
  3. Envoi par mail de la page html courante
    Par turtly dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 09/04/2009, 10h34
  4. Envoie de mail dans une page jsp
    Par ze veritable farf dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/06/2006, 11h34
  5. Envoi par mail d'une page asp existante
    Par killerhertz dans le forum ASP
    Réponses: 10
    Dernier message: 22/06/2006, 13h31

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