Question

Je souhaite envoyer un courrier à partir d'un script sous Windows Server 2003 Standard Edition. Je pense que la configuration du serveur est quasiment prête à l'emploi.

Le serveur de messagerie est un serveur Exchange, et lorsque vous êtes sur le réseau interne, vous pouvez utiliser un ancien SMTP standard. Je l'ai fait depuis ma machine avec Perl, mais malheureusement, Perl n'est pas disponible sur le serveur.

Existe-t-il un moyen simple de procéder à partir d'un fichier .bat ou de toute autre manière ne nécessitant pas l'installation de logiciels supplémentaires?

Modifier:
Merci pour les réponses rapides. Le "blat" thingie fonctionnerait probablement très bien, mais avec wscript, je n'ai pas besoin d'utiliser un binaire séparé.

Je n'ai pas vu le message de PhiLho la première fois que j'ai édité et sélectionné une réponse. Inutile de dupliquer le code ici.

Enregistrez simplement le script dans un fichier, par exemple, sendmail.vbs, puis appelez-le à partir de l'invite de commande de la manière suivante:
wscript sendmail.vbs

Était-ce utile?

La solution

C’est possible avec Wscript, en utilisant CDO:

Dim objMail

Set objMail = CreateObject("CDO.Message")

objMail.From = "Me <Me@Server.com>"
objMail.To = "You <You@AnotherServer.com>"
objMail.Subject = "That's a mail"
objMail.Textbody = "Hello World"
objMail.AddAttachment "C:\someFile.ext"

---8<----- You don't need this part if you have an active Outlook [Express] account -----
' Use an SMTP server
objMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

' Name or IP of Remote SMTP Server
objMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
    "smtp.server.com"

' Server port (typically 25)
objMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

objMail.Configuration.Fields.Update
----- End of SMTP usage ----->8---

objMail.Send

Set objMail=Nothing
Wscript.Quit

Mise à jour: retrouvez plus d'informations à ce sujet: VBScript à envoyer Email en utilisant CDO Par défaut, il semble qu'il utilise Outlook [Express]. Cela n'a donc pas fonctionné sur mon ordinateur, mais vous pouvez utiliser un serveur SMTP donné, ce qui a fonctionné correctement pour moi.

Autres conseils

Je ne sais pas si le fait de supprimer un binaire à côté du fichier .bat compte pour l'installation du logiciel, mais vous pouvez également utiliser blat pour ce faire.

Si le serveur est arrivé (je me rends compte de l'âge de cette question) à avoir installé Powershell v2, CmdLet Send-MailMessage le ferait sur une seule ligne.

Send-MailMessage [-To] <string[]> [-Subject] <string> -From <string> [[-Body] <string>] [[-SmtpServer] <string>] [-Attachments <string[]>] [-Bcc <string[]>] [-BodyAsHtml] [-Cc <string[]>] [-Credential <PSCredential>] [-DeliveryNotficationOption {None | OnSuccess | OnFailure | Delay | Never}] [-Encoding <Encoding>] [-Priority {Normal | Low | High}] [-UseSsl] [<CommonParameters>]

Si Outlook / Exchange est installé sur votre ordinateur, vous devriez pouvoir utiliser des CDONTs. Créez simplement un fichier mail.vbs et appelez-le dans un fichier de commandes comme suit (amusement, ils sont dans le même répertoire)

wscript mail.vbs

pour l'extraction de code VBScript

http://support.microsoft.com/kb/197920

http://www.w3schools.com/asp/asp_send_email.asp

oubliez le fait que les deux liens parlent d'ASP, cela devrait fonctionner correctement comme script autonome sans IIS.

Je pense que vous devrez installer un ActiveX ou un autre composant pouvant être appelé à partir de WScript, tel que: http://www.activexperts.com/ActivEmail/ et: http://www.emailarchitect.net/webapp/SMTPCOM/developers/scripting. asp

Sinon, vous devrez écrire vous-même la logique SMTP complète (si possible, c'est incertain) dans WScript.

Utiliser CDONTS avec l'hôte de script Windows (WScript)

Existe-t-il un moyen d’envoyer sans référencer les URL de schéma externes? http://schemas.microsoft.com/cdo/configuration/

Cela est très inutile, car on ne peut présumer que toutes les boîtes auront un accès Internet externe pour envoyer du courrier en interne sur le central local. Existe-t-il un moyen de sauvegarder les informations de ces URL localement?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top