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

Automatiser l'envoi quotidien d'un email avec pièce jointe

6 réponses
Avatar
sylv1g
Bonjour =E0 tous,

je suis nouveau dans ce groupe, je ne connais quasiment rien =E0 la
programmation, mais je suis toujours tr=E8s motiv=E9 pour parvenir =E0 mes
fins ;-) En l'occurrence, je cherche avec acharnement un moyen
d'envoyer automatiquement un email avec pi=E8ce-jointe, et tous les
scripts (.vbs) que j'ai essay=E9s pour le moment n'ont pas
fonctionn=E9...
Sauriez-vous me guider vers les ressources concern=E9es, m'indiquer un
script fonctionnel sous Vista ou, carr=E9ment, me dire ce qui emp=EAche le
script suivant de fonctionner chez moi ? :


On Error Resume Next
With CreateObject("CDO.Message")
If Err Then
MsgBox "CDO non install=E9"
Else
.From=3D"moi@gawab.com"
.To=3D"lui@gmail.com"
.Subject=3D"Rapport"
.TextBody=3D"Rapport"
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/
configuration/sendusing") =3D 2
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/
configuration/smtpserver") =3D "smtp.gawab.com"
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/
configuration/smtpserverport") =3D 25
.Configuration.Fields.Update
.AddAttachment("C:\Users\moi\Desktop\fichier.txt")
.Send
If Err Then MsgBox "Le message n'a pas pu =EAtre exp=E9di=E9."
End If
On Error GoTo 0
End With

-------------------------------------------

Option Explicit
Dim Fso : Set Fso =3D CreateObject("Scripting.FileSystemObject")
Dim MyFile : MyFile =3D "C:\Users\moi\Desktop\fichier.txt"
Const Destinataires =3D "lui@gmail.com"
Const Emetteur =3D "moi@gawab.com"
Const cdoSendUsingPort =3D 2
Const strSmartHost =3D "smtp.sfr.fr"
Dim Corps, Sujet
Sujet =3D "Rapport"
Corps =3D "Rapport"
SendMail Sujet, Corps, MyFile
Set Fso =3D Nothing
Sub SendMail(Sujet, Corps, fic1)
End sub

Un grand merci d'avance de votre aide !

6 réponses

Avatar
Christian ASTOR
On 4 sep, 12:03, sylv1g wrote:
En l'occurrence, je cherche avec acharnement un moyen
d'envoyer automatiquement un email avec pièce-jointe,



En C++, avec la même méthode (CDO), ça marche =>
(et il y a plein d'exemples dans MSDN en VBS ou C++,
http://msdn.microsoft.com/en-us/library/ms992542(EXCHG.65).aspx,
etc...)

// pour générer .tlh
//#import "c:program filescommon filessystemadomsado15.dll"
rename_namespace("ADODB") rename("EOF", "EndOfFile")
raw_interfaces_only
//#import <cdosys.dll> no_namespace auto_search auto_rename
named_guids raw_interfaces_only

#include <windows.h>
#include <tchar.h>

#include "cdosys.tlh"

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
CoInitialize(NULL);

HRESULT hr = S_OK;
IMessage* pMessage = NULL;
hr = CoCreateInstance(__uuidof(Message), NULL, CLSCTX_INPROC_SERVER,
__uuidof(IMessage), (void**)&pMessage);

_variant_t vTo = "";
_variant_t vText =
"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">"
"<HTML>"
" <BODY>"
" <p><FONT COLOR="#663399"><b>Ceci est un Test</b></
FONT></p>"
" </BODY>"
"</HTML>";

hr = pMessage->put_To(_bstr_t(vTo));
hr = pMessage->put_From(_bstr_t(""From" "));
hr = pMessage->put_Subject(_bstr_t("Test email CDO"));
hr = pMessage->put_HTMLBody(_bstr_t( vText ));

hr = pMessage->put_AutoGenerateTextBody(TRUE);
hr = pMessage->put_MimeFormatted(TRUE);

IConfiguration* pConfiguration = NULL;
hr = CoCreateInstance(__uuidof(Configuration), NULL,
CLSCTX_INPROC_SERVER, __uuidof(IConfiguration), (void**)
&pConfiguration);

ADODB::Fields* pFields = NULL;
ADODB::Field* pField = NULL;

hr = pConfiguration->get_Fields(&pFields);

hr = pFields->get_Item(_variant_t(cdoSendUsingMethod), &pField);
hr = pField->put_Value(_variant_t((long)cdoSendUsingPort));
pField->Release();
pField=NULL;

hr = pFields->get_Item(_variant_t(cdoSMTPServer), &pField);
hr = pField->put_Value(_variant_t("SRVSMTP.smt.cm.net")); // SMTP
Server
pField->Release();
pField=NULL;

hr = pFields->get_Item(_variant_t(cdoSMTPServerPort), &pField);
hr = pField->put_Value(_variant_t((long)25)); // SMTP Port
pField->Release();
pField=NULL;

hr = pFields->Update();
pFields->Release();
pFields=NULL;

hr = pMessage->putref_Configuration(pConfiguration);
pConfiguration->Release();
pConfiguration=NULL;

IBodyPart* pBodyPart;
hr = pMessage->AddAttachment((_bstr_t)"c:toto.txt", NULL, NULL,
&pBodyPart);

pMessage->Send();
pMessage->Release();
pBodyPart->Release();

CoUninitialize();

}
Avatar
sylv1g
Bonjour et désolé du retard, beaucoup à faire depuis l'envoi de mon
message..

J'ai donc placé votre script dans un fichier .bat. Une fenêtre DOS
s'ouvre rapidement quand je le lance mais aucun mail n'est envoyé, et
cela quel que soit le serveur SMTP ou le port que j'indique...
Vu le nombre de scripts différents que j'ai essayés jusqu'à présent ,
et qui sont censés fonctionner, je commence vraiment à croire que le
problème se situe totalement ailleurs... (Serveur sortant ne
fonctionne qu'avec authentification ? etc.)
Je désespère, auriez-vous une idée ?
Avatar
Christian ASTOR
On 11 sep, 12:44, sylv1g wrote:
Bonjour et désolé du retard, beaucoup à faire depuis l'envoi de mon
message..

J'ai donc placé votre script dans un fichier .bat. Une fenêtre DOS
s'ouvre rapidement quand je le lance mais aucun mail n'est envoyé, et
cela quel que soit le serveur SMTP ou le port que j'indique...



Tu veux parler du/des scripts de MSDN ?
Car ce que j'ai posté, c'est du C++, donc dans un bat, il va avoir du
mal à s'exécuter...
Si je traduis le même en VBS , ça marche également sur mon poste :

Const cdoSendUsingMethod = "http://schemas.microsoft.com/cdo/
configuration/sendusing", _
cdoSendUsingPort = 2, _
cdoSMTPServer = "http://schemas.microsoft.com/cdo/configuration/
smtpserver", _
cdoSMTPServerPort = "http://schemas.microsoft.com/cdo/configuration/
smtpserverport"

Dim iMessage, iConfiguration, iFields
Set iMessage = CreateObject("CDO.Message")
Set iConfiguration = CreateObject("CDO.Configuration")
Set iFields = iConfiguration.Fields

With iFields
.Item(cdoSendUsingMethod) = cdoSendUsingPort
.Item(cdoSMTPServerPort) = 25
.Item(cdoSMTPServer) = "SRVSMTP.smt.cm.net"
.Update
End With

With iMessage
.Configuration = iConfiguration
.To = ""
.From = ""
.Subject = "Test email CDO"
End With

iMessage.AddAttachment "c:toto.txt"
iMessage.Send

MsgBox "Message envoyé"
Avatar
sylv1g
Avec ce script en vbs, un message Windows Script Host me signale
l'erreur suivante :
Ligne : 1
Caract. : 62
Erreur : Constante chaîne non terminée
Code : 800A0409
Source : Erreur de compilation Microsoft VBScript

...
Avatar
Christian ASTOR
On 11 sep, 18:15, sylv1g wrote:
Avec ce script en vbs, un message Windows Script Host me signale
l'erreur suivante :
Ligne : 1
Caract. : 62
Erreur : Constante chaîne non terminée
Code : 800A0409
Source : Erreur de compilation Microsoft VBScript



Parce que, comme c'est écrit, tu as coupé la ligne 1 en plein milieu
au caractère 62.
(pareil pour les autres constantes...)
Avatar
sylv1g
On avance on avance... ;-)
J'en suis à des problèmes de serveur. Quand j'essaie avec les serveurs
et ports de mon cru (smtp.gmail.com, port 465, etc.) j'obtiens "le
serveur a rejeté l'adresse de l'expéditeur. La réponse du serveur
était : 530 5.5.1"...