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

Le
sylv1g
Bonjour à tous,

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


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

-

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

Un grand merci d'avance de votre aide !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christian ASTOR
Le #20062291
On 4 sep, 12:03, sylv1g
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 named_guids raw_interfaces_only

#include #include
#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 =
" "<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();

}
sylv1g
Le #20117261
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 ?
Christian ASTOR
Le #20117981
On 11 sep, 12:44, 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...



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é"
sylv1g
Le #20120361
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

...
Christian ASTOR
Le #20120351
On 11 sep, 18:15, 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



Parce que, comme c'est écrit, tu as coupé la ligne 1 en plein milieu
au caractère 62.
(pareil pour les autres constantes...)
sylv1g
Le #20122961
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"...
Publicité
Poster une réponse
Anonyme