2008-09-30 34 views
9

Me gustaría enviar correos de una secuencia de comandos en Windows Server 2003 Standard Edition. Creo que la configuración del servidor está prácticamente fuera de la caja.Enviar correo desde una secuencia de comandos de Windows

El servidor de correo es uno de Exchange, y cuando estás en la red interna puedes usar el viejo y simple SMTP. Lo hice desde mi máquina con Perl, pero desafortunadamente Perl no está disponible en el servidor.

¿Hay una manera fácil de hacerlo desde un archivo .bat o de cualquier otra manera que no requiera la instalación de algún software adicional?

Edit:
Gracias por las respuestas rápidas. La cosa "blat" probablemente funcionaría bien, pero con wscript no tengo que usar un binario por separado.

No vi la publicación de PhiLho la primera vez que edité y seleccioné una respuesta. No necesito duplicar el código aquí.

Sólo tiene que guardar la secuencia de comandos en un archivo, dicen sendmail.vbs, y luego llamarlo desde la línea de comandos, así:
wscript sendmail.vbs

Respuesta

9

Es posible con Wscript, utilizando CDO:

Dim objMail 

Set objMail = CreateObject("CDO.Message") 

objMail.From = "Me <[email protected]>" 
objMail.To = "You <[email protected]>" 
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 

actualización: hallaron más información existe: VBScript To Send Email Using CDO Por defecto parece que utiliza Perspectivas [ Express], por lo que no funcionó en mi computadora pero puede usar un servidor SMTP dado, que funcionó bien para mí.

+0

Recibido a 'El servidor rechazó la dirección del remitente ... Primero debe emitir un comando STARTTLS.' –

+0

@TomHoward A menudo, los servidores de correo requieren que realice una solicitud POP3, autenticando al usuario, antes de emitir una solicitud SMTP. – PhiLho

6

No sé si contar un archivo binario junto con el archivo .bat cuenta como software de instalación, pero, si no, puede usar blat para hacerlo.

1

Si ha instalado Outlook/Exchange debe ser capaz de utilizar CDONTS, basta con crear un archivo mail.vbs y llamarlo en un archivo por lotes como tal (divertida que están en el mismo directorio)

wscript mail.vbs 

para el código VBScript echa un vistazo a

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

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

olvidar el hecho de que los dos l las tintas hablan de ASP, debería funcionar bien como un script independiente sin iis.

+0

CDONTS está obsoleto y reemplazado por CDOSYS. http://support.microsoft.com/default.aspx/kb/810702 –

0

Use CDONTS con Windows Scripting Host (WScript)

0

¿Hay alguna forma de enviar sin hacer referencia a las direcciones externas del esquema? http://schemas.microsoft.com/cdo/configuration/

Eso es muy inútil, ya que no se puede suponer que todas las cajas tendrán acceso a Internet externo para enviar correo interno en la central local.¿Hay alguna manera de guardar la información de esas urls localmente?

4

Si se produjo el servidor (me doy cuenta de la antigüedad de esta pregunta) para instalar Powershell v2, CmdLet Send-MailMessage lo haría en una línea.

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>] 
Cuestiones relacionadas