Pregunta

Me gustaría enviar correo desde un script en una edición estándar de Windows Server 2003. Creo que la configuración del servidor está prácticamente lista para usar.

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

¿Existe una forma fácil de hacer esto desde un archivo .bat o de alguna otra forma que no requiera la instalación de algún software adicional?

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

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

Simplemente guarde la secuencia de comandos en un archivo, por ejemplo, sendmail.vbs, y luego llámela desde el símbolo del sistema de este modo: wscript sendmail.vbs

¿Fue útil?

Solución

Es posible con Wscript, usando 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

Actualización: encontré más información allí: VBScript para enviar Correo electrónico utilizando CDO De manera predeterminada, parece que usa Outlook [Express], por lo que no funcionó en mi computadora, pero puedes usar un servidor SMTP determinado, lo que funcionó bien para mí.

Otros consejos

No sé si colocar un archivo binario junto al archivo .bat cuenta como software de instalación, pero si no, puede usar blat para hacer esto.

Si ocurriera el servidor (me doy cuenta de la antigüedad de esta pregunta) al tener instalado Powershell v2, el mensaje de envío de mensajes de CmdLet 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>]

Si tienes Outlook / Exchange instalado, deberías poder usar CDONT, solo crea un archivo mail.vbs y llámalo en un archivo por lotes como eso (por diversión, están en el mismo directorio)

wscript mail.vbs

para el código de VBScript desprotegido

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

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

olvide el hecho de que los dos enlaces hablan sobre ASP, debería funcionar bien como un script independiente sin iis.

Creo que tendrás que instalar algún ActiveX u otro componente que se pueda invocar desde WScript, como: http://www.activexperts.com/ActivEmail/ y: http://www.emailarchitect.net/webapp/SMTPCOM/developers/scripting. asp

De lo contrario, tendrá que escribir toda la lógica SMTP (si es posible, no está seguro) en WScript, todo por su cuenta.

Use CDONTS con Windows Scripting Host (WScript)

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

Eso es muy inútil, ya que no se puede asumir que todas las cajas tendrán acceso externo a Internet para enviar correos internos a la central local. ¿Hay alguna forma de guardar la información de esas URL de forma local?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top