Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

codage d'envoi Mail en VBA

5 réponses
Avatar
Pascal
Quelqu'un aurait' il la gentillesse de m'indiquer comment en VBA avec
CDO.MESSAGE(dont petit exemple ci-joint) de définir le codage par défaut,
en l'occurrence LATIN ISO 9 (charset 8859-15)
car ave cette méthode, le symbole "?" (euro) n'est pas pris en compte, si
j'arrive à indiquer le jeux de caractère cela passera
merci de vos idées
Pascal

Set iMsg = CreateObject("CDO.Message")
With iMsg
Set .Configuration = iConf
.To = "mon adresseMAIL"
.CC = ""
.BCC =
.From = "EXPEDITEURduMAIL
.Subject = "LE SUJET"
.TextBody = strbody
.Send
End With

5 réponses

Avatar
MichDenis
Pour le plus simple, as-tu tenter de redéfinir cet élément dans
Outlook Express : Pour ce faire : Barre des menus / outils / Options /
dans l'onglet "Message" tu peux définir "La police et grosseur des
caractères que tu veux utiliser pour les messages ou les News....
Le test que j'ai fait était avec la police Arial.
Et dans l'onglet "Envoi", paramètres internationaux, j'ai choisi
ISO-Latin 9
Dans le même onglet "Envoi", un peu plus bas,
"Format d'envoi du courrier" / paramètres de texte brut /
tu choisis "MiME" et dans la liste déroulante Base 64
Tu peux faire la même chose pour Format d'envoi des News
si tu le désires. (si les intervenants sur MPFE modifiait leurs
paramètres, ce serait fini les substitutions du ? pour ?... je crois !!!

Maintenant, tu demandes à ton (tes) interlocuteur d'utiliser les
mêmes paramètres... et tu ne devrais plus avoir de problèmes
avec ça. Si les gens qui recoivent tes messages ne modifie pas leur
configuration, il n'y a point de salut peu importe ce que toi tu fais.

Si tu utilises Microsoft OutLook, tu as sensiblement ces mêmes paramètres
à partir de la barre des menus / outils / options / paramètres internationaux
et Police...

Il ne te restera plus qu'à utiliser une procédure (macro) utilisant soit Outlook express
ou Microsoft Outlook pour l'envoi de tes courriels. À cet effet, l'adresse internet
pointant sur le site de Ron de Bruin te donne l'embarras du choix.

'--------------------------------------------------------------
P.S- Je ne suis pas en mesure de tester ce qui suit et je n'ai pas l'intention
d'intervenir si tu optes pour cette voie.

Pour un truc plus compliqué...sans assurance de garantie et ce en supposant que
les destinataires modifient leurs configurations, il y a ceci :

Pour pouvoir faire ce que tu désires, tu pourrais utiliser un code semblable à celui-ci

Cependant pour ce faire, tu devras télécharger sur le Net ce fichier : smtpsvg.dll
Je crois que son obtention doit être payannte... Est-ce que cela en vaut le coût ?

Si tu le trouves, tu dois initialer la base de registre :
après copier le fichier dans c:WindowsSystem32

Tu ouvres Menu Démarrer de la barre des tâches, Exécuter et tu tapes :
regsvr32.exe c:WindowsSystem32smtpsvg.dll

Et tu pourras ajouter la référence dans Excel via la fenêtre de
l'éditeurde texte / barre des menus / Outils / référence...

Tu pourras alors utiliser cette ligne de code :
'Où cette que tu jugeras approprié...pas tester
objMail.CustomCharSet = "ISO-8859-2"
'-----------------------------------
Sub EnvoieMail()
Dim Server As ASPTypeLibrary.Server
Server.CreateObject ("Mailer")
sErrMsg = SendEmail("smtp.cgocable.ca", _
"éditeur.com", _
"", _
"Important message", _
"This is an important message bla bla")
End Sub
'-----------------------------------

Function SendEmail(sEmailServer, sFromEmail, sToEmail, sSubject, sText)
Dim objMail
Set objMail = Server.CreateObject("SMTPsvg.Mailer")
objMail.FromName = sFromEmail
objMail.FromAddress = sFromEmail
objMail.CustomCharSet = "ISO-8859-2"
objMail.RemoteHost = sEmailServer
objMail.AddRecipient sToEmail, sToEmail
objMail.Subject = sSubject
objMail.BodyText = sText
If objMail.SendMail Then
SendEmail = ""
Else ' Message send failure
SendEmail = objMail.Response
End If
Set objMail = Nothing
End Function
'-----------------------------------





"Pascal" ,com> a écrit dans le message de news:

Quelqu'un aurait' il la gentillesse de m'indiquer comment en VBA avec
CDO.MESSAGE(dont petit exemple ci-joint) de définir le codage par défaut,
en l'occurrence LATIN ISO 9 (charset 8859-15)
car ave cette méthode, le symbole "?" (euro) n'est pas pris en compte, si
j'arrive à indiquer le jeux de caractère cela passera
merci de vos idées
Pascal

Set iMsg = CreateObject("CDO.Message")
With iMsg
Set .Configuration = iConf
.To = "mon adresseMAIL"
.CC = ""
.BCC .From = "EXPEDITEURduMAIL
.Subject = "LE SUJET"
.TextBody = strbody
.Send
End With
Avatar
Pascal
bonjour &agrave; toi,<br />
je pensais que la propri&eacute;t&eacute; textplain de CDO se chargerai de faire plus<br />
simplement<br />
merci de l'info<br />
Pascal<br />
<br />
&quot;MichDenis&quot; &lt;&gt; a &eacute;crit dans le message de groupe de<br />
discussion : #<br />
<blockquote class="block0"><br />
<br />
Pour le plus simple, as-tu tenter de red&eacute;finir cet &eacute;l&eacute;ment dans<br />
Outlook Express : Pour ce faire : Barre des menus / outils / Options /<br />
dans l'onglet &quot;Message&quot; tu peux d&eacute;finir &quot;La police et grosseur des<br />
caract&egrave;res que tu veux utiliser pour les messages ou les News....<br />
Le test que j'ai fait &eacute;tait avec la police Arial.<br />
Et dans l'onglet &quot;Envoi&quot;, param&egrave;tres internationaux, j'ai choisi<br />
ISO-Latin 9<br />
Dans le m&ecirc;me onglet &quot;Envoi&quot;, un peu plus bas,<br />
&quot;Format d'envoi du courrier&quot; / param&egrave;tres de texte brut /<br />
tu choisis &quot;MiME&quot; et dans la liste d&eacute;roulante Base 64<br />
Tu peux faire la m&ecirc;me chose pour Format d'envoi des News<br />
si tu le d&eacute;sires. (si les intervenants sur MPFE modifiait leurs<br />
param&egrave;tres, ce serait fini les substitutions du ? pour ?... je crois !!!<br />
<br />
Maintenant, tu demandes &agrave; ton (tes) interlocuteur d'utiliser les<br />
m&ecirc;mes param&egrave;tres... et tu ne devrais plus avoir de probl&egrave;mes<br />
avec &ccedil;a. Si les gens qui recoivent tes messages ne modifie pas leur<br />
configuration, il n'y a point de salut peu importe ce que toi tu fais.<br />
<br />
Si tu utilises Microsoft OutLook, tu as sensiblement ces m&ecirc;mes param&egrave;tres<br />
&agrave; partir de la barre des menus / outils / options / param&egrave;tres<br />
internationaux<br />
et Police...<br />
<br />
Il ne te restera plus qu'&agrave; utiliser une proc&eacute;dure (macro) utilisant soit<br />
Outlook express<br />
ou Microsoft Outlook pour l'envoi de tes courriels. &Agrave; cet effet, l'adresse<br />
internet<br />
pointant sur le site de Ron de Bruin te donne l'embarras du choix.<br />
<br />
'--------------------------------------------------------------<br />
P.S- Je ne suis pas en mesure de tester ce qui suit et je n'ai pas<br />
l'intention<br />
d'intervenir si tu optes pour cette voie.<br />
<br />
Pour un truc plus compliqu&eacute;...sans assurance de garantie et ce en<br />
supposant que<br />
les destinataires modifient leurs configurations, il y a ceci :<br />
<br />
Pour pouvoir faire ce que tu d&eacute;sires, tu pourrais utiliser un code<br />
semblable &agrave; celui-ci<br />
<br />
Cependant pour ce faire, tu devras t&eacute;l&eacute;charger sur le Net ce fichier :<br />
smtpsvg.dll<br />
Je crois que son obtention doit &ecirc;tre payannte... Est-ce que cela en vaut<br />
le co&ucirc;t ?<br />
<br />
Si tu le trouves, tu dois initialer la base de registre :<br />
apr&egrave;s copier le fichier dans c:WindowsSystem32<br />
<br />
Tu ouvres Menu D&eacute;marrer de la barre des t&acirc;ches, Ex&eacute;cuter et tu tapes :<br />
regsvr32.exe c:WindowsSystem32smtpsvg.dll<br />
<br />
Et tu pourras ajouter la r&eacute;f&eacute;rence dans Excel via la fen&ecirc;tre de<br />
l'&eacute;diteurde texte / barre des menus / Outils / r&eacute;f&eacute;rence...<br />
<br />
Tu pourras alors utiliser cette ligne de code :<br />
'O&ugrave; cette que tu jugeras appropri&eacute;...pas tester<br />
objMail.CustomCharSet = &quot;ISO-8859-2&quot;<br />
'-----------------------------------<br />
Sub EnvoieMail()<br />
Dim Server As ASPTypeLibrary.Server<br />
Server.CreateObject (&quot;Mailer&quot;)<br />
sErrMsg = SendEmail(&quot;smtp.cgocable.ca&quot;, _<br />
&quot;&eacute;diteur.com&quot;, _<br />
&quot;&quot;, _<br />
&quot;Important message&quot;, _<br />
&quot;This is an important message bla bla&quot;)<br />
End Sub<br />
'-----------------------------------<br />
<br />
Function SendEmail(sEmailServer, sFromEmail, sToEmail, sSubject, sText)<br />
Dim objMail<br />
Set objMail = Server.CreateObject(&quot;SMTPsvg.Mailer&quot;)<br />
objMail.FromName = sFromEmail<br />
objMail.FromAddress = sFromEmail<br />
objMail.CustomCharSet = &quot;ISO-8859-2&quot;<br />
objMail.RemoteHost = sEmailServer<br />
objMail.AddRecipient sToEmail, sToEmail<br />
objMail.Subject = sSubject<br />
objMail.BodyText = sText<br />
If objMail.SendMail Then<br />
SendEmail = &quot;&quot;<br />
Else ' Message send failure<br />
SendEmail = objMail.Response<br />
End If<br />
Set objMail = Nothing<br />
End Function<br />
'-----------------------------------<br />
<br />
<br />
<br />
<br />
<br />
&quot;Pascal&quot; &lt;,com&gt; a &eacute;crit dans le message de news:<br />
<br />
Quelqu'un aurait' il la gentillesse de m'indiquer comment en VBA avec<br />
CDO.MESSAGE(dont petit exemple ci-joint) de d&eacute;finir le codage par d&eacute;faut,<br />
en l'occurrence LATIN ISO 9 (charset 8859-15)<br />
car ave cette m&eacute;thode, le symbole &quot;?&quot; (euro) n'est pas pris en compte, si<br />
j'arrive &agrave; indiquer le jeux de caract&egrave;re cela passera<br />
merci de vos id&eacute;es<br />
Pascal<br />
<br />
Set iMsg = CreateObject(&quot;CDO.Message&quot;)<br />
With iMsg<br />
Set .Configuration = iConf<br />
.To = &quot;mon adresseMAIL&quot;<br />
.CC = &quot;&quot;<br />
.BCC &gt; .From = &quot;EXPEDITEURduMAIL<br />
.Subject = &quot;LE SUJET&quot;<br />
.TextBody = strbody<br />
.Send<br />
End With<br />
<br />
<br />
<br />
<br />
</blockquote><br />
Avatar
MichDenis
Il faut moduler le message pr&eacute;c&eacute;dent. Je lui apporte le b&eacute;mol suivant :<br />
<br />
Apr&egrave;s quelques v&eacute;rifications, semble-t-il qu'il serait possible<br />
d'obtenir ce que tu veux en utilisant cette proc&eacute;dure avec ADO.<br />
et ce sans que ton correspondant modifie son interface.<br />
(si tel est le cas, d&eacute;sol&eacute; de t'avoir induit en erreur)<br />
<br />
Pour ton information, la biblioth&egrave;que responsable est :<br />
Biblioth&egrave;ue : CDO<br />
Fichier responsable : c:Windowssystem32cdosys.dll<br />
R&eacute;f&eacute;rence : Microsoft CDO for Windows 2000 Library<br />
<br />
P.S- Tu n'es pas oblig&eacute; de l'ajouter car la proc&eacute;dure utilise<br />
une &quot;liaison tardive&quot;<br />
<br />
'-----------------------------------------<br />
Sub test()<br />
<br />
Dim ObjMail As Object<br />
Dim ServeurSMTP As String, Texte As String<br />
Dim Suget As String, Fichier As String<br />
Dim Destinataire As String, Expediteur As String<br />
Dim FichiersJoints As String<br />
Dim AutresDestinataires As String<br />
<br />
'*********** &agrave; D&eacute;finir******************<br />
ServeurSMTP = &quot;smtp. ...&agrave; d&eacute;finir&quot;<br />
Sujet = &quot;La raison du message &euro;&quot;<br />
Texte = &quot;Texte du Message &euro;&quot;<br />
'Si plusieurs fichiers : s&eacute;parer par un point-virgule<br />
FichiersJoints = &quot;c:classeur1.xls&quot; ' si requis<br />
Destinataire = &quot;&quot;<br />
Expediteur = &quot;&quot;<br />
'Si plusieurs adresses : s&eacute;parer par un point-virgule&quot;<br />
AutresDestinataires = &quot;&quot;<br />
'****************************************<br />
<br />
Set ObjMail = CreateObject(&quot;CDO.Message&quot;)<br />
With ObjMail<br />
.To = Destinataire ' &quot;&quot;<br />
.From = Expediteur<br />
.CC = AutresDestinataires<br />
.Subject = Sujet<br />
.MimeFormatted = True<br />
.GetStream.Charset = cdoISO_8859_15<br />
.BodyPart.Charset = cdoISO_8859_15<br />
.BodyPart.ContentTransferEncoding = &quot;base64&quot;<br />
.TextBody = Texte<br />
If Dir(Fichier) &lt;&gt; &quot;&quot; Then<br />
.AddAttachment FichiersJoints<br />
End If<br />
With .Configuration.Fields<br />
.Item(&quot;http://schemas.microsoft.com/cdo/configuration/sendusing&quot;) = 2<br />
.Item(&quot;http://schemas.microsoft.com/cdo/configuration/smtpserver&quot;) = ServeurSMTP<br />
.Item(&quot;http://schemas.microsoft.com/cdo/configuration/smtpserverport&quot;) = 25<br />
.Update<br />
End With<br />
.Send<br />
End With<br />
<br />
End Sub<br />
'-----------------------------------------<br />
Avatar
Pascal
Michel....EXCELENT<br />
.MimeFormatted = True<br />
.GetStream.Charset = cdoISO_8859_15<br />
.BodyPart.Charset = cdoISO_8859_15<br />
.BodyPart.ContentTransferEncoding = &quot;base64&quot;<br />
.TextBody = Texte<br />
est juste ce que je cherchai<br />
sois mille fois remerci&eacute;<br />
Pascal<br />
<br />
<br />
<br />
&quot;MichDenis&quot; &lt;&gt; a &eacute;crit dans le message de groupe de<br />
discussion : #LCzqH#<br />
<blockquote class="block0"><br />
Il faut moduler le message pr&eacute;c&eacute;dent. Je lui apporte le b&eacute;mol suivant :<br />
<br />
Apr&egrave;s quelques v&eacute;rifications, semble-t-il qu'il serait possible<br />
d'obtenir ce que tu veux en utilisant cette proc&eacute;dure avec ADO.<br />
et ce sans que ton correspondant modifie son interface.<br />
(si tel est le cas, d&eacute;sol&eacute; de t'avoir induit en erreur)<br />
<br />
Pour ton information, la biblioth&egrave;que responsable est :<br />
Biblioth&egrave;ue : CDO<br />
Fichier responsable : c:Windowssystem32cdosys.dll<br />
R&eacute;f&eacute;rence : Microsoft CDO for Windows 2000 Library<br />
<br />
P.S- Tu n'es pas oblig&eacute; de l'ajouter car la proc&eacute;dure utilise<br />
une &quot;liaison tardive&quot;<br />
<br />
'-----------------------------------------<br />
Sub test()<br />
<br />
Dim ObjMail As Object<br />
Dim ServeurSMTP As String, Texte As String<br />
Dim Suget As String, Fichier As String<br />
Dim Destinataire As String, Expediteur As String<br />
Dim FichiersJoints As String<br />
Dim AutresDestinataires As String<br />
<br />
'*********** &agrave; D&eacute;finir******************<br />
ServeurSMTP = &quot;smtp. ...&agrave; d&eacute;finir&quot;<br />
Sujet = &quot;La raison du message ?&quot;<br />
Texte = &quot;Texte du Message ?&quot;<br />
'Si plusieurs fichiers : s&eacute;parer par un point-virgule<br />
FichiersJoints = &quot;c:classeur1.xls&quot; ' si requis<br />
Destinataire = &quot;&quot;<br />
Expediteur = &quot;&quot;<br />
'Si plusieurs adresses : s&eacute;parer par un point-virgule&quot;<br />
AutresDestinataires = &quot;&quot;<br />
'****************************************<br />
<br />
Set ObjMail = CreateObject(&quot;CDO.Message&quot;)<br />
With ObjMail<br />
.To = Destinataire ' &quot;&quot;<br />
.From = Expediteur<br />
.CC = AutresDestinataires<br />
.Subject = Sujet<br />
.MimeFormatted = True<br />
.GetStream.Charset = cdoISO_8859_15<br />
.BodyPart.Charset = cdoISO_8859_15<br />
.BodyPart.ContentTransferEncoding = &quot;base64&quot;<br />
.TextBody = Texte<br />
If Dir(Fichier) &lt;&gt; &quot;&quot; Then<br />
.AddAttachment FichiersJoints<br />
End If<br />
With .Configuration.Fields<br />
.Item(&quot;http://schemas.microsoft.com/cdo/configuration/sendusing&quot;) =<br />
2<br />
.Item(&quot;http://schemas.microsoft.com/cdo/configuration/smtpserver&quot;)<br />
= ServeurSMTP<br />
<br />
.Item(&quot;http://schemas.microsoft.com/cdo/configuration/smtpserverport&quot;) =<br />
25<br />
.Update<br />
End With<br />
.Send<br />
End With<br />
<br />
End Sub<br />
'-----------------------------------------<br />
<br />
<br />
<br />
<br />
<br />
</blockquote><br />
Avatar
Modeste
Bonsour&reg; Pascal avec ferveur ;o))) vous nous disiez :<br />
<br />
<blockquote class="block0"><br />
Michel....EXCELENT<br />
;o)))<br />
</blockquote><br />
&ccedil;a faisait longtemps qu'on ne lui avait plus faite celle-l&agrave;, au Denis !!!!<br />
<br />
quand &agrave; la solution fournie cela illustre parfaitement cette &eacute;vocation par LSteph : &quot;les bons parpaings&quot;<br />
;o)))<br />
<br />
--<br />
@+<br />
;o)))<br />
<br />