Envoyer un message avec une pièce jointe à partir d'une page aspx avec code sur la page aspx.vb
-
mercredi 30 janvier 2013 16:19Bonjour,
Comment faire pour attacher une pièce jointe à un formulaire de renseignements en asp.net, en code vb, et avec un contrôle FileUpload .
J'ai établi un formulaire de recueil des informations telles que le nom, prénom , adresse, numéro de téléphone, email et une textBox multiligne , pour recueillir les informations.
Jusqu'ici avec la variable MailMessage et SendMail , tout va bien.
Le message est envoyé sans erreur et est stocké sur le WebMail de mon Hébergeur.
Du coup j'ai ajouté à mon formulaire un contrôle FileUpLoad, muni de son bouton Parcourir, afin de permettre aux visiteurs d'envoyer, s'ils le souhaitent, une pièce jointe.
Dans tous les forum où j'ai posé la question, les réponses étaient pratiquement que celle-ci:
il faut ajouter " MessageAttachment " , et c'est tout !...
D'accord cela je le sais, mais comment faire, justement pour que la pièce jointe parte avec le message ?
Pouvez-vous avoir l'amabilité de me fournir la procédure exacte qui me permettra d'attacher une pièce jointe à mon message
Merci d'avance pour vos réponses, pour ce sujet qui est récurrent dans tous les forums, mais pour lequel, on ne trouve à ce jour, sauf erreur de ma part, aucune conduite à tenir fiable et complète
- Modifié StudioWin (Publicnew) mercredi 30 janvier 2013 16:20 Faute d"orthographe
- Type modifié Aurel BeraMicrosoft Contingent Staff, Owner lundi 11 février 2013 07:31 Discussion
Toutes les réponses
-
mercredi 30 janvier 2013 16:37
bref si j'ai bien compris , tu fait bien les instruction suivante :
Dim oAttch As MailAttachment = New MailAttachment("C:\monfichier.zip") oMsg.Attachments.Add(oAttch) SmtpMail.Send(oMsg)En revanche sur ton serveur tu ne trouve pas les pièces jointe.
la première chose a vérifier si les service SMTP des deux coté accepte l'envoi et la réception des pièces jointes.
-
mercredi 30 janvier 2013 19:37
bref si j'ai bien compris , tu fait bien les instruction suivante :
Dim oAttch As MailAttachment = New MailAttachment("C:\monfichier.zip") oMsg.Attachments.Add(oAttch) SmtpMail.Send(oMsg)En revanche sur ton serveur tu ne trouve pas les pièces jointe.
la première chose a vérifier si les service SMTP des deux coté accepte l'envoi et la réception des pièces jointes.
Oui, d'accord. Sauf qu'il y a un contrôle aspx sur la page, et ce contrôle ( FileUpLoad) est chargé non seulement de récupérer le chemin du fichier ( Comme un OpenFileDialog dans un WinForm), puis de le sauvegarder (comme dans un SaveFileDialog dans un Winform), avant de le transmettre.
Donc, je pense qu'il faut explicitement déclarer une variable avec un .FileName , puis sauvegarder avec une autre ligne du style SaveAs
En plus il faut indiquer la racine du serveur de départ, c'est-à dire mon disque dur par l'intermédiaire du contrôle FileUpload, puis d'indiquer Indiquer le serveur de reception du style peut-être Server.MapPath("~\")
Ce n'est pas aussi simple qu'on ne le pense, l'attachement d'une pièce jointe.
Bien sûr c'est plus facile si c'était un Winform.
Ici C'est une Page .aspx ( System.Web.UI.Page)
Merci d'avoir essayé.
Oui , mon serveur (WebMail) accepte l’enregistrement des pièces jointes attachées au message.
-
mercredi 30 janvier 2013 21:16il faut aussi donner l'autorisation a IIS en lecture/ecriture sur le dossier de l'upload
-
jeudi 31 janvier 2013 12:20> Donc, je pense qu'il faut explicitement déclarer une variable avec un> .FileName , puis sauvegarder avec une autre ligne du style SaveAsProbablement pas nécessaire.Le constructeur d'Attachment ainsi que le contrôle FileUpload disposentde propriétés de type Stream.
Fred -
jeudi 31 janvier 2013 13:11Propriétaire
Bonjour,
Est-ce que vous avez testé les solutions proposées ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.
Cordialement,
Aurel
-
dimanche 3 février 2013 16:27
J'ai inclus ce code dans mon formulaire d'envoi comme ci -dessous
Le ccors du mesage avec ou sans pièce jointe , n'arrive pas sur le serveur.
Par contre dès que j'enlève le code la pièce jointe, le message arrrive sur le serveur.
Voci le code complet, le mien et celui de DaliMahirbi
Imports System.Net.Mail Imports System.Web.Mail Protected Sub btnEnvoyer_Click(sender As Object, e As System.EventArgs) Handles btnEnvoyer.Click Me.Validate() If Me.IsValid Then Try Dim message As New MailMessage("mondomaine@free.fr", "contact@mondomaine.fr") message.Subject = "[Mon domaine.fr ] Contact" message.Body = "[Contact Transmis Mon domaine.Fr]" _ & txtObjet.Text _ & vbCr & txtNom.Text.ToUpper _ & txtPrenom.Text _ & dplAge.Text _ & vbCr & dplCivilite.Text _ & vbCr & txtMail.Text _ & vbCr & txtTel.Text _ & vbCr & lblCP.Text & txtCP.Text _ & vbCr & txtVille.Text _ & vbCr & txtAdresse _ & vbCr & txtCommentaire.Text ' le code de la pièce jointe, et vous tous m'aviez gracieusement offert et je vous en remercie Dim oAttch As MailAttachment = New MailAttachment("C:\monfichier.zip") oMsg.Attachments.Add(oAttch) 'Envoi du message et envoi simultané de la pièce jointe (bien sûr j'ai placé un fichier nommémonficheier.zip à la racine du disque C Dim smtp As New SmtpClient Me.PnlConfirmation.Controls.Add(New LiteralControl(smtp.Host)) smtp.Host = "localhost" smtp.Send(message) smtpMail.Send(oMsg) Catch ex As Exception lblMessageErreur.Text = "La page a rencontré une erreur.Vos données n'ont pas été envoyées !" End Try End If Me.pnlMessage.Visible = False Me.PnlConfirmation.Visible = True End SubAlors ce code non seulement il n'envoie pas la pièce jointe, mais n'envoie pas le corps du message non plus
Débarrassé du code de la pièce jointe pour lequel Windows ne cesse de m'adresser des messages pour m'informer qu'il est obsolète, le mesage arrive sur sur le serveur du Webmail, mais bien sûr sans la pièce jointe.
Je vous l'avais bien spécifié : il y a sûrment quelque chose à faire avec le contrôle web FileUpload ( muni de son bouton Parcourir)
Et , à mon sens c'est là que se trouve la solution !...
Je compte sur votre expertise
Merci de votre patience
-
dimanche 3 février 2013 16:29
Bonjour
Très bien , avez-vous un exemple de code complet à me proposer ?
Merci
-
lundi 4 février 2013 10:09Propriétaire
Bonjour
Ici vous avez un exemple en C#:
et pour le transformer en VB.NET vous pouvez utiliser :
http://www.developerfusion.com/tools/convert/csharp-to-vb/
Cordialement,
-
lundi 4 février 2013 20:56
Bonjour
Ici vous avez un exemple en C#:
et pour le transformer en VB.NET vous pouvez utiliser :
http://www.developerfusion.com/tools/convert/csharp-to-vb/
Cordialement,
Bonjour,
Merci d'avoir pris la peine d'examiner mon code.
Je vais aller traduire ce code C# en VB, l'appliquer dans mon formulaire .aspx, et vous tenir bien entendu informé de l'évolution de "mon parcours". Evolution que je souhaite favorable bien entendu ausssi.
Cordialement
-
mercredi 6 février 2013 11:16Propriétaire
Bonjour,
Merci pour tenir la communauté informée sur la suite de vos démarches.
Merci,
-
vendredi 8 février 2013 09:17Propriétaire
Bonjour,
Nous changeons le type de votre question à « Discussion générale ». Si vous avez plus de temps pour réexaminer la question et fournir plus d'informations, n'hésitez pas à modifier le type du thread à « Question ». Si le problème est résolu, s’il vous plaît partagez la solution avec nous afin que la réponse puisse être trouvée et utilisée par d'autres membres de la communauté ayant des questions similaires.
Merci !
Cordialement,
-
dimanche 3 mars 2013 20:11
Bonjour,
Pardonnez-moi ce retard.
Oui , j'ai testé mais je reste toujours bloqué.Le code que vous m'aviez indiqué ne tiens pas compte de mon contrôle FileUpload, mais donne comme exemple , l'envoi d'un fichier .xls à un un ensemble de correspondant :
Voici ce que j'essaye de faire:
Protected Sub btnEnvoyer_Click(sender As Object, e As System.EventArgs) Handles btnEnvoyer.Click ' Construction du message qui contient un TextBox Nom, TextBox Prénom, TextBox Email et TextBox Commentaire ' txtMail.Text contient l'adresse Mail de l'expéditeur ' "contact@monsite.com" est le destinataire (le webmaster du site www.@monsite.com) Dim message As New System.Net.Mail.MailMessage(txtMail.Text, "webmaster@monsite.com") 'l'objet du message message.Subject = "[Demande d'informations]" 'le corps du message message.Body = "[Demande transmise par le site www.monsite.com]" _ & vbCr & txtNom.Text.ToUpper _ & vbCr & txtPrenom.Text _ & vbCr & txtMail.Text _ & vbCr & txtCommentaire.Text Dim Fichier As String = "" ' Créer le fichier à joindre avec le message . Dim data As New Attachment(Fichier, MediaTypeNames.Application.Octet) ' Ajouter les propriétés du fichier. Dim disposition As ContentDisposition = data.ContentDisposition disposition.CreationDate = System.IO.File.GetCreationTime(Fichier) disposition.ModificationDate = System.IO.File.GetLastWriteTime(Fichier) disposition.ReadDate = System.IO.File.GetLastAccessTime(Fichier) ' Add the file attachment to this e-mail message. message.Attachments.Add(data) Dim cheminPieceJointe As FileUpload = fileUploadChemin 'Comment concertir ce FileUpload en String ? 'Comment sauver le chemin du fichier contenu dans cet FileUpload , 'Envoi du message Dim smtp As New SmtpClient smtp.Host = "localhost" smtp.Send(message) ' comment ajouter ici l'envoi de la pièce jointe ? Try smtp.Send(message) Catch ex As Exception Console.WriteLine("Exception(): {0}", ex.ToString()) End Try ' Afficher les proprités de la pièce jointe. Dim cd As ContentDisposition = data.ContentDisposition Console.WriteLine("Content disposition") Console.WriteLine(cd.ToString()) Console.WriteLine("File {0}", cd.FileName) Console.WriteLine("Size {0}", cd.Size) Console.WriteLine("Creation {0}", cd.CreationDate) Console.WriteLine("Modification {0}", cd.ModificationDate) Console.WriteLine("Read {0}", cd.ReadDate) Console.WriteLine("Inline {0}", cd.Inline) Console.WriteLine("Parameters: {0}", cd.Parameters.Count) For Each d As DictionaryEntry In cd.Parameters Console.WriteLine("{0} = {1}", d.Key, d.Value) Next data.Dispose() End Sub End ClassEt voici un échantillon de capture d'écran de ce que pourrait être ce formulaire.
Le problème est : comment faire pour instancier , sauver et joindre ce qui se trouve dans le bouton "Parcourir", avecl'envoi du reste du message.
L'envoi du message seul ne me pose pas de problème.
C'est la pièce jointe qui me bloque.
-
lundi 4 mars 2013 08:27Propriétaire
Bonjour
Le problème est : comment faire pour instancier , sauver et joindre ce qui se trouve dans le bouton "Parcourir", avecl'envoi du reste du message.
Ici vous avez un exemple sur le traitement à faire avec FileUpload:
Vous enregistrez le fichier dans un chemin temporaire et utilisez ce chemin pour l'envoyer comme attachement.
Attention ! Vous sélectionnez un fichier sur dans l’explorateur. Ce fichier est envoyé au postback (pas comme nom du fichier mais le contenu du fichier) vers le serveur. Ici vous devez l’enregistrer avec SaveAs dans un chemin temporaire et l’attacher.
Cordialement,
-
jeudi 7 mars 2013 20:09
Bonjour
Le problème est : comment faire pour instancier , sauver et joindre ce qui se trouve dans le bouton "Parcourir", avecl'envoi du reste du message.
Ici vous avez un exemple sur le traitement à faire avec FileUpload:
Vous enregistrez le fichier dans un chemin temporaire et utilisez ce chemin pour l'envoyer comme attachement.
Attention ! Vous sélectionnez un fichier sur dans l’explorateur. Ce fichier est envoyé au postback (pas comme nom du fichier mais le contenu du fichier) vers le serveur. Ici vous devez l’enregistrer avec SaveAs dans un chemin temporaire et l’attacher.
Cordialement,
Bonsoir,
Merci pour votre réponse et ce nouvel apport de code, que je vais étudier, comprendre et mettre en oeuvre afin d'essayer de résoudre cette difficulté.
Bien entendu, je vous mettrai au courant dès que j'aurai trouvé, afin que toute la communauté puisse en profiter (Ce n'est pas une mince affaire!...)
Cordialement
-
samedi 9 mars 2013 12:42
Bonjour,
Merci de votre accompagnement durant toutes mes recherches : cette question est dorénavant résolue.
Voici le code en Visual Basic.Net
Imports System.Net.Mail Imports System.IO Partial Class _Default Inherits System.Web.UI.Page Protected Sub btnEnvoyer_Click(sender As Object, e As System.EventArgs) Handles btnEnvoyer.Click ' Construction du message qui contient: '> un TextBox pour le Nom '> un TextBox pour le Prénom '> un TextBox pour l'Email '> unTextBox pour le commentaire '------------------------------------------------------------------------------------------ '> txtMail.Text contient l'adresse Mail de l'expéditeur ' "contact@monsite.com" est le destinataire (le webmaster du site www.@monsite.com) '------------------------------------------------------------------------------------------ '> un contrôle FileUpload chargé de récupérer le chemin de la pièce jointe et de le poster ' et dont l'ID est FileUpload1 '------------------------------------------------------------------------------------------- Dim message As New System.Net.Mail.MailMessage(txtMail.Text, "webmaster@monsite.com") 'l'objet du message message.Subject = "[Demande d'informations]" 'le corps du message message.Body = "[Demande transmise par le site www.monsite.com]" _ & vbCr & txtNom.Text.ToUpper _ & vbCr & txtPrenom.Text _ & vbCr & txtMail.Text _ & vbCr & txtCommentaire.Text '------------------------------------------------------------------------------------ 'Identifier le chemin de la pièce à joindre et l'attacher au message Dim fileName As String = Path.GetFileName(FileUpload1.PostedFile.FileName) Dim myAttachment As New Attachment(FileUpload1.FileContent, fileName) message.Attachments.Add(myAttachment) '------------------------------------------------------------------------------ 'Envoi du message Dim smtp As New SmtpClient smtp.Host = "localhost" smtp.Send(message) End Sub End Class
- Modifié StudioWin (Publicnew) samedi 9 mars 2013 12:43

