Bonjour,
Mon application envoie des mails par macro via Thunderbird et j’utilise cette routine
Sub EnvoiDocMail(Optional sExpediteur$,sDestinataire$,Optional Bcc(),Optional Cc(),Optional sObjet$,Optional sTexte$,Optional urlFichierJoint$)
'>> Envoi Mail - avec le client mail du systeme
Dim oSystemMail As Object
Dim oClientMail As Object
Dim oMsgMail As Object
Dim PiecesJointes(0)
if not isMissing(urlFichierJoint) then PiecesJointes(0) = urlFichierJoint ' "file:///…"
If getGuiType() = 1 Then 'avec Windows
oSystemMail = createUnoService("com.sun.star.system.SimpleSystemMail") 'avec Windows
oClientMail = oSystemMail.querySimpleMailClient()
Else 'avec Linux
oClientMail = createUnoService("com.sun.star.system.SimpleCommandMail") 'avec Linux MacOsx
End if
oMsgMail = oClientMail.createSimpleMailMessage()
With oMsgMail
if Not isMissing(sExpediteur) then .Originator=sExpediteur
.Recipient = sDestinataire
If Not isMissing(Bcc) Then oMsgMail.BCcRecipient= Array(Bcc)
If Not isMissing(Cc) Then oMsgMail.CcRecipient= Array(Cc)
.Subject=sObjet
.Body = sTexte
if not isMissing(urlFichierJoint) then .Attachement =PiecesJointes()
End With
oClientMail.sendSimpleMailMessage (oMsgMail, 0)
End Sub
Sub TestEnvoiDocMail
EnvoiDocMail("exped@gmail.com","destinataire@gmail.com",,,"Test EnvoiDocMail ","Bonne réception<br/><b> et à bientôt</b>")
End Sub
Comme mon application doit tourner sur Windows et Linux, je suis obligé des tester l’os (getTypeGui).
Est ce que quelqu’un pourrait m’expliquer pourquoi il faut utiliser SimpleSytemMail sur Windows et SimpleCommandMail sur Linux !
Les deux “services” aboutissants à XSimpleMailClientSupplier voir : https://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1system_1_1XSimpleMailClientSupplier.html
Le problème c’est que sous Linux , SimpleCommandMail ne supporte pas les virgules dans le texte (du body) alors qu’il n’y a pas de souci sous Windows.
Oups ! ce n’est pas SimpleCommandMail qui à un problème avec les virgules … ce serait plutôt Thunderbird (115.3.1) sous Linux
Je viens de tester le code suivant
Sub EnvoiShellMail(sExpediteur$,sDestinataire$,Optional sCc$(),Optional sBcc$(),sObjet$,sTexte$,urlPJ$())
'Shell("adresse du programme",option affichage, "arguments du programme")
Shell("file:///home/pierre/Applications/thunderbird/thunderbird",0, _
"-compose " & _
"from=" & sExpediteur & _
",to=" & sDestinataire & _
",subject=" & sObjet & _
",body=" & sTexte) '& _
' ",cc=" & join(sCC,",") & _
' ",bcc=" &join(sBcc,",") & _
' ",attachment=" & join(urlPJ,",") )
'End Sub
Sub TestEnvoiShellMail
EnvoiShellMail("exped@gmail.com","desti@gmail.com",,,"Test EnvoiShellMail ","Bonne; réception et à bientôt",)
End Sub
Le résultat est le même si on place une virgule dans le texte, le texte est tronqué jusqu’à la virgule.
J’utilise souvent cette routine car elle permet de modifier l’expéditeur (chose que je ne suis pas arrivé à faire avec SimpleCommandMail)
Vous pouvez tester avec la routine TestEnvoiDocMail ou la routine TestEnvoiShellMail… mettez une virgule entre “bonne” et “réception” dans le texte.
Merci pour vos explications si vous en avez.