Envoyer un mail via VBA problème d'objet et corps de message

Vous cherchez une alternative viable et sécurisée pour votre courrier ? Une conjuration s'est abattue sur vous et vous ne réussissez pas à trouver réponse satisfaisante à propos de Mozilla Thunderbird ? Cliquez donc par là…

Modérateur : J2m06

NonoGeek
Arias
Messages : 3
Inscription : 15 févr. 2017, 15:48

Envoyer un mail via VBA problème d'objet et corps de message

Message par NonoGeek »

Bonjour à tous,
J'ai déjà effectué une recherche sur le forum pour mon problème, mais sans réponse

J'utilise un code VBA sur Excel pour envoyer un mail via Thunderbird

Code : Tout sélectionner

Sub EnvoiThunderbird(LigClt As Long, LigDoc As Long, sObj As String)
  Dim sAdrTo As String, Quoi As String, sBody As String, sNum As String
  Dim sPathFile As String, StrCmd As String, sPathTB As String
  ' Récupérer l'adresse mail du client
  sAdrTo = Sheets("CLIENT").Range("F" & LigClt)
  ' Récupérer les infos nécessaires
  Quoi = Sheets("ListeDoc").Range("A" & LigDoc)
  sNum = Sheets("ListeDoc").Range("B" & LigDoc)
  sBody = "Bonjour," & "<br><br>" _
        & "Vous trouverez ci-joint votre " & Quoi & IIf(Quoi = "DEVIS", " cité", " citée") _
        & " en objet au format PDF." & "<br><br>" _
        & "Vous en souhaitant bonne réception."
  ' Récupérer le chemin d'accès au fichier
  sPathFile = Sheets("ListeDoc").Range("I" & LigDoc).Formula
  sPathFile = Mid(sPathFile, 13)
  sPathFile = Left(sPathFile, InStr(14, sPathFile, Chr(34)) - 1)
  ' Tester l'emplacement du programme
  sPathTB = CheminValide("C:\Program Files (x86)\Mozilla Thunderbird\")
  If sPathTB = "" Then CheminValide ("C:\Program Files\Mozilla Thunderbird\")
  If sPathTB = "" Then
    MsgBox "Impossible de trouver la messagerie Thinderbird !", vbCritical, "ARRET..."
    Exit Sub
  End If
  ' Préparer la chaine d'envoi via Thunderbird
  StrCmd = sPathTB & "thunderbird"
  StrCmd = StrCmd & " -compose " & "to='" & sAdrTo & "'"
  StrCmd = StrCmd & "," & "subject=" & Quoi & " n° " & sNum & " - " & sObj & ","
  StrCmd = StrCmd & "format='1',"
  StrCmd = StrCmd & "body=" & sBody & ","
  StrCmd = StrCmd & "attachment=file:///" & sPathFile
  MsgBox StrCmd
  Call Shell(StrCmd, vbNormalFocus)
End Sub
Mais dans ce que j'obtiens, l'objet n'est pas correcte et je n'ai pas le texte du mail :cry:
Image

Qui pourrait m'aider SVP :wink:

Merci d'avance
Votre Navigateur : Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
NonoGeek
Arias
Messages : 3
Inscription : 15 févr. 2017, 15:48

Re: Envoyer un mail via VBA problème d'objet et corps de message

Message par NonoGeek »

Re,

Désolé pour lé dérangement, j'ai trouvé la soulution, il ne faut pas de "," ni de "-" dans mon objet et corps de message sinon c'est mal interprété
Voici le bon code :wink:

Code : Tout sélectionner

Sub EnvoiThunderbird(LigClt As Long, LigDoc As Long, sObj As String)
  Dim sAdrTo As String, Quoi As String, sBody As String, sNum As String
  Dim sPathFile As String, StrCmd As String, sPathTB As String
  ' Récupérer l'adresse mail du client
  sAdrTo = Sheets("CLIENT").Range("F" & LigClt)
  ' Récupérer les infos nécessaires
  Quoi = Sheets("ListeDoc").Range("A" & LigDoc)
  sNum = Sheets("ListeDoc").Range("B" & LigDoc)
  sBody = "Bonjour" & "<br><br>" _
        & "Vous trouverez ci-joint votre " & Quoi & IIf(Quoi = "DEVIS", " cité", " citée") _
        & " en objet au format PDF." & "<br><br>" _
        & "Vous en souhaitant bonne réception."
  ' Récupérer le chemin d'accès au fichier
  sPathFile = Sheets("ListeDoc").Range("I" & LigDoc).Formula
  sPathFile = Mid(sPathFile, 13)
  sPathFile = Left(sPathFile, InStr(14, sPathFile, Chr(34)) - 1)
  ' Tester l'emplacement du programme
  sPathTB = CheminValide("C:\Program Files (x86)\Mozilla Thunderbird\")
  If sPathTB = "" Then CheminValide ("C:\Program Files\Mozilla Thunderbird\")
  If sPathTB = "" Then
    MsgBox "Impossible de trouver la messagerie Thinderbird !", vbCritical, "ARRET..."
    Exit Sub
  End If
  ' Préparer la chaine d'envoi via Thunderbird
  StrCmd = sPathTB & "thunderbird"
  StrCmd = StrCmd & " -compose " & "to='" & sAdrTo & "'"
  StrCmd = StrCmd & "," & "subject=" & Quoi & " n° " & sNum & " " & sObj & ","
  StrCmd = StrCmd & "format='1',"
  StrCmd = StrCmd & "body=" & sBody & ","
  StrCmd = StrCmd & "attachment=file:///" & sPathFile
  ' Lancer le Shell commande
  Call Shell(StrCmd, vbNormalFocus)
End Sub
Ceci dit, si je veux mettre une virgule derrière le "Bonjour," comment je fais moi :lol:

A+
Votre Navigateur : Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Avatar de l’utilisateur
Jean-Claude
Animal mythique
Messages : 6993
Inscription : 02 avr. 2006, 03:24

Re: Envoyer un mail via VBA problème d'objet et corps de message

Message par Jean-Claude »

Bonjour,

Tu le fais en remplaçant la virgule par le caractère numérique HTML prévu pour la virgule. Cela donne :

sBody = "Bonjour" & "&#44;" & "<br><br>"
OU
sBody = "Bonjour&#44;" & "<br><br>"

Plus d'infos ICI

A+
Votre Navigateur : Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
NonoGeek
Arias
Messages : 3
Inscription : 15 févr. 2017, 15:48

Re: Envoyer un mail via VBA problème d'objet et corps de message

Message par NonoGeek »

Salut Jean-Claude
Effectivement :roll: quel newbie je fais :lol:
Merci
Votre Navigateur : Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Apouf
Arias
Messages : 1
Inscription : 19 sept. 2022, 09:11

Re: Envoyer un mail via VBA problème d'objet et corps de message

Message par Apouf »

Merci pour cette info.
En effet après une virgule dans le corps du message le texte qui suit est ignoré.
Du coup le "&#44;" est salvateur !!!
Merci encore.
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Google [Bot] et 51 invités