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

VB.NET Discussion :

[VB.NET] Envoyer des mails avec pièces jointes crystalreport


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 42
    Points : 21
    Points
    21
    Par défaut [VB.NET] Envoyer des mails avec pièces jointes crystalreport
    Bonjour,

    J'ai créer un état CrystalReport sous VB.Net 2010,
    Voila cependant, je voudrais pouvoir envoyer par pièce jointe cette état par mail.

    En réfléchissant un peu, je pense que je dois d'abord générer temporairement l'état en en fichier PDF. Puis l'envoyer en pièce jointe par mail.

    Cependant, après quelques recherches sur le net, j'ai vu que le meilleur moyen était d'utiliser Winsock, bien que ayant récupérer des code pour faire des test, je n'arrive pas à trouver la librairie pour winsock en effet, j'ai une trentaine d'erreurs générer, disant par exemple que SMTP n'est pas déclaré... etc voici le code que j'ai trouvé :

    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
     
            Dim sServerResponse As String
            Dim sDataToSend As String
            Dim MessageLines() As String
            Dim i As Long
     
            ' Récupère la réponse du serveur
            Winsock1.GetData(sServerResponse)
     
            If Left(sServerResponse, 1) = "2" Or Left(sServerResponse, 1) = "3" Then
     
                Select Case CurrentSMTPSessionState
                    Case SMTP_CONNECT
                        CurrentSMTPSessionState = SMTP_HELO ' Change l'état de la session
     
                        ' Récupère le nom de domaine
                        sDataToSend = Right(lcSenderAddress, Len(lcSenderAddress) - InStr(lcSenderAddress, "@"))
     
                        ' Et envoie la commande HELO au serveur
                        sDataToSend = "HELO " & sDataToSend & vbCrLf
                        Winsock1.SendData(sDataToSend)
     
                    Case SMTP_HELO
                        CurrentSMTPSessionState = SMTP_MAIL ' Change l'état de la session
     
                        ' Et envoie la commande MAIL au serveur
                        sDataToSend = "MAIL FROM:<" & lcSenderAddress & ">" & vbCrLf
                        Winsock1.SendData(sDataToSend)
     
                    Case SMTP_MAIL
                        CurrentSMTPSessionState = SMTP_RCPT ' Change l'état de la session
     
                        ' Et envoie la commande RCPT au serveur
                        sDataToSend = "RCPT TO:<" & lcRecipientAddress & ">" & vbCrLf
                        Winsock1.SendData(sDataToSend)
     
                    Case SMTP_RCPT
                        CurrentSMTPSessionState = SMTP_DATA ' Change l'état de la session
     
                        ' Et envoie la commande DATA au serveur
                        sDataToSend = "DATA" & vbCrLf
                        Winsock1.SendData(sDataToSend)
     
                    Case SMTP_DATA
                        CurrentSMTPSessionState = SMTP_SENDMESSAGE  ' Change l'état de la session
     
                        ' Envoie les en-têtes du message
                        Winsock1.SendData("Subject: " & lcSubject & vbLf)
                        Winsock1.SendData("From: " & Chr(34) & lcSenderDisplayName & Chr(34) & " <" & lcSenderAddress & ">" & vbLf)
                        Winsock1.SendData("To: " & Chr(34) & lcRecipientDisplayName & Chr(34) & " <" & lcRecipientAddress & ">" & vbLf)
     
                        ' Scinde le message en lignes
                        MessageLines = Split(lcMessage, vbCrLf)
     
                        ' Envoie chaque ligne du message
                        For i = 0 To UBound(MessageLines)
                            sDataToSend = MessageLines(i)
                            If Left(sDataToSend, 1) = "." Then
                                sDataToSend = "." & sDataToSend
                            End If
                            Winsock1.SendData(sDataToSend & vbLf)
                        Next
     
                        ' Envoie un point pour indiquer la fin de l'envoie des données
                        Winsock1.SendData(vbCrLf & "." & vbCrLf)
     
                    Case SMTP_SENDMESSAGE
                        CurrentSMTPSessionState = SMTP_QUIT ' Change l'état de la session
     
                        ' Affichage d'un message de confirmation, à supprimer dans le code définitif
                        MsgBox("Le message envoyé avec succès.", vbInformation)
     
                        ' Et envoie la commande QUIT au serveur
                        Winsock1.SendData("QUIT" & vbCrLf)
     
                    Case SMTP_QUIT
                        Winsock1.Close()  ' Ferme la connexion
                End Select
            Else
                MsgBox("Erreur SMTP : " & sServerResponse, vbExclamation)
                CurrentSMTPSessionState = SMTP_QUIT
                Winsock1.SendData("QUIT" & vbCrLf)
            End If
        End Sub
     
        Private Sub Winsock1_Error(ByVal Number As Integer, ByVal Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, ByVal CancelDisplay As Boolean)
     
            MsgBox("Winsock Error number " & Number & " : " & Description, vbExclamation)
            Winsock1.Close()
        End Sub
     
    Public Sub SendMail(ByVal SMTPServeur As String, _
                       ByVal SenderAddress As String, _
                       ByVal RecipientAddress As String, _
                       ByVal Subject As String, _
                       ByVal Message As String, _
                       Optional ByVal SenderDisplayName As String, _
                       Optional ByVal RecipientDisplayName As String)
     
            lcSenderDisplayName = Trim(SenderDisplayName)
            lcSenderAddress = Trim(SenderAddress)
            lcRecipientDisplayName = Trim(RecipientDisplayName)
            lcRecipientAddress = Trim(RecipientAddress)
            lcSubject = Trim(Subject)
            lcMessage = Trim(Message)
     
            CurrentSMTPSessionState = SMTP_CONNECT
            Winsock1.Connect(Trim$(SMTPServeur), 25)
        End Sub
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Call SendMail("smtp.serveur.com", "jean.dubois@serveur.com", "john.smith@serveur.com", _
                    "Petit test", "Hello !", "Jean Dubois", "John Smith")
        End Sub
     
     
    End Class
    Par ailleurs, mon autre question est comment générer un PDF d'un état crystal report et le mettre dans un dossier temporaire?

    Bref, si quelqu'un pourrait me diriger vers un lien plus simple ou plus concret ou simplement m'aider, ce ne serai pas de refus!

    Je vous remercie d'avance de votre aide.
    Cordialement, Zilien

  2. #2
    Membre averti
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Points : 392
    Points
    392
    Par défaut
    je suis dans la même situation ( a peut prés ) et donc j'ai une procédure qui envoie des mail avec une propriété "pathpdf" facultative
    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
    Public Sub envoie_mail(ByVal destinataire As String, ByVal titre As String, ByVal texte As String, Optional ByVal pathpdf As String = "")
     
            Try
     
                Dim mail As MailMessage
                Dim smtp As SmtpClient
                mail = New MailMessage(AdresseMail, destinataire, titre, texte) ' nouveau message
     
     
                Dim sFiles() As String
                Dim nbfiles As String
                Dim i As Integer
     
                sFiles = Directory.GetFiles(Application.StartupPath & "\JoinToMail\")
                nbfiles = Directory.GetFiles(Application.StartupPath & "\JoinToMail\").Length()
                If pathpdf <> "" Then
                    Dim lepdf As New Attachment(pathpdf)
                    mail.Attachments.Add(lepdf)
                End If
                For i = 0 To nbfiles - 1
                    Dim pathfile As String = sFiles(i)
                    Dim lapiece As Attachment
                    lapiece = New Attachment(pathfile)
                    mail.Attachments.Add(lapiece)
                    'MsgBox(pathfile)
                Next
     
                mail.IsBodyHtml = True ' corp mail en html
                smtp = New SmtpClient(str_smtp)
                smtp.Port = portsmtp
                smtp.Credentials = New System.Net.NetworkCredential(login_mail, pwd_mail) ' id
                smtp.EnableSsl = True ' ssl
                smtp.Send(mail)
            Catch ex As Exception
                envoie_mail(MailAdmin, "envoie mail impossible", ex.Message & " <br> " & texte & "<br> devait etre envoyer a " & destinataire)
            End Try
     
        End Sub
    ensuite il te suffit de créé une fonction du génère un pdf et renvoie le chemin de celui ci .
    et si tu désire ne pas les conserver tu le supprime une fois le mail envoyé

    nb: la boucle a l'intérieur place tout les fichier d'un répertoire en pièce jointe

    cordialement

    si tu es perdu clique ici
    langage connus : xhtml/css , ASP.NET/VB.NET , JS, JQuery , PHP , SQL, PL/SQL, JAVA,
    BI : DataStage ,Essbase , BO , Microsoft BI , SAS, Talend, Cognos, Qliqview

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 42
    Points : 21
    Points
    21
    Par défaut
    Merci infiniment pour ton code il a l'air de répondre à ce que j'attends, cependant ton code fait il un envoie direct cad je dois créer une forme de type "présentation" mail ou bien cela ouvre -il une messagerie pas défaut???

    Merci encore ,

    Cordialement ZIlien

  4. #4
    Membre averti
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Points : 392
    Points
    392
    Par défaut
    quand tu va utiliser le code il va y avoir quelque variable indéfinie qui seront compte , serveur smtp , mot de passe , port

    après le corp du message est en html

    donc la présentation ne devrai pas etre un probléme

    ps : n'oublie pas d'importer net.mail system.io

    si tu es perdu clique ici
    langage connus : xhtml/css , ASP.NET/VB.NET , JS, JQuery , PHP , SQL, PL/SQL, JAVA,
    BI : DataStage ,Essbase , BO , Microsoft BI , SAS, Talend, Cognos, Qliqview

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 42
    Points : 21
    Points
    21
    Par défaut
    Hum, ok les étant novices dans ce domaines, je sais bien ce qu'est le smtp, mais comment le définir et le mot de passe et le port? ou du moins le récupérer?

    Dois-je créer un genre de fichier.ini pour sauvegarder ces informations? et pouvoir certainement les configurer par la suite?

    Désole de tant de questions mais quand on débute! lol

  6. #6
    Membre averti
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Points : 392
    Points
    392
    Par défaut
    chaque FAI et la plupart des entreprise dispose de serveur smtp

    le protocole smtp permet d'envoyer des mail
    Voir la liste des fai avec leur adresse de serveur et leur port

    en général le port est 587 a cause de la connexion ssl

    et pour le stockage de ces donné moi j'utilise un fichier xml , j'ai eu trop de probléme avec les .ini qui gére mal le codage des caractère , aprés tu fait comme tu veut .

    si tu es perdu clique ici
    langage connus : xhtml/css , ASP.NET/VB.NET , JS, JQuery , PHP , SQL, PL/SQL, JAVA,
    BI : DataStage ,Essbase , BO , Microsoft BI , SAS, Talend, Cognos, Qliqview

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 42
    Points : 21
    Points
    21
    Par défaut
    Super !
    Merci beaucoup de ton aide précieuse alex61!!!!

    Je pense pouvoir me débrouiller pour la suite!!

    Cordialement, Zilien

  8. #8
    Membre averti
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Points : 392
    Points
    392
    Par défaut
    mais de rien j'avait les sources sous la main ^^

    si tu es perdu clique ici
    langage connus : xhtml/css , ASP.NET/VB.NET , JS, JQuery , PHP , SQL, PL/SQL, JAVA,
    BI : DataStage ,Essbase , BO , Microsoft BI , SAS, Talend, Cognos, Qliqview

  9. #9
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 42
    Points : 21
    Points
    21
    Par défaut
    Hum re salut a tous,

    Alex61 ton code marche bien, du moins presque...
    Je veux aussi créer un répertoire pour créer le ficheir pdf a joindre totu se fait normalement le souci vient lors de la récupératio nde ce fichier pdf dans le dossier
    ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Directory.GetFiles(Application.StartupPath & "\JoinToMail\")
    Cause des soucis, en effet, il ne se place pas du tout dans le dossier jointomail alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.StartupPath & "\JoinToMail\
    retourne bien le bon chemin je ne sait pas pourquoi cela coince ici
    voici le code en entier :

    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
    If NetworkInformation.NetworkInterface.GetIsNetworkAvailable Or My.Computer.Network.IsAvailable Then
     
                Try
     
                    Dim mail As MailMessage
                    Dim smtp As SmtpClient
     
                    Dim Adressemail = myadress.Text
                    Dim destinataire = destinatmail.Text
                    Dim titre = objmail.Text
                    Dim texte = msgmail.Text
                    Dim pathpdf As String
                    mail = New MailMessage(Adressemail, destinataire, titre, texte) ' nouveau message
     
     
                    Dim sFiles() As String
                    Dim nbfiles As String
                    Dim i As Integer
                    pathpdf = nompdf & ".pdf"
                    ' c'est ici que sa coince!
                    sFiles = Directory.GetFiles(RecupCheminTemp() & "\JoinToMail\")
                    nbfiles = Directory.GetFiles(RecupCheminTemp() & "\JoinToMail\").Length()

  10. #10
    Membre averti
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Points : 392
    Points
    392
    Par défaut
    ta essayer de fair un msgbox ou un debug.write de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.StartupPath & "\JoinToMail\
    ?

    si tu es perdu clique ici
    langage connus : xhtml/css , ASP.NET/VB.NET , JS, JQuery , PHP , SQL, PL/SQL, JAVA,
    BI : DataStage ,Essbase , BO , Microsoft BI , SAS, Talend, Cognos, Qliqview

  11. #11
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 42
    Points : 21
    Points
    21
    Par défaut
    j'ai repris le code de zéro en m'inspirant fortement du tiens il semble que cette fois ci c'est ok...

    J'ai comparé quand meme les deux codes mais je n'est pas pu différencié qu'est-ce qui a bugué!

    En tout cas merci pour ton code il est géniale et marche!

  12. #12
    Membre averti
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Points : 392
    Points
    392
    Par défaut
    héhé je l'ai moi même avec mes petite main

    si tu es perdu clique ici
    langage connus : xhtml/css , ASP.NET/VB.NET , JS, JQuery , PHP , SQL, PL/SQL, JAVA,
    BI : DataStage ,Essbase , BO , Microsoft BI , SAS, Talend, Cognos, Qliqview

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

Discussions similaires

  1. Comment envoyer un mail avec pièce jointe (BCB6)
    Par renesouley dans le forum C++Builder
    Réponses: 16
    Dernier message: 30/12/2006, 21h56
  2. Envoyer un mail avec pièce jointe
    Par anirose dans le forum VBA Access
    Réponses: 6
    Dernier message: 08/11/2006, 12h45
  3. Envoyer un mail avec pièce jointe (javascript)
    Par Dorra_26 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 21/07/2006, 08h31
  4. Générer des mail avec pièce jointe au format PDF
    Par Michel DELAVAL dans le forum Access
    Réponses: 2
    Dernier message: 26/06/2006, 15h07
  5. [C++/MFC]Envoyer un mail avec Pièce jointe
    Par cjacquel dans le forum MFC
    Réponses: 4
    Dernier message: 12/06/2006, 13h48

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