2009-04-02 30 views
43

Tenemos una secuencia de comandos para respaldar archivos. Una vez finalizada la operación de copia de seguridad, nos gustaría enviar un informe como notificación por correo electrónico a algunas de nuestras direcciones de correo electrónico.enviando correo desde el archivo por lotes

¿Cómo se pudo hacer esto?

+0

plzsendz tehcodz? –

+2

Estoy confundido. Él está preguntando cómo enviar correos electrónicos desde un archivo por lotes. ¿Cómo no es eso una pregunta de programación? – RossFabricant

+0

maldita sea 'lote y no bash, olvida mi comentario – chburd

Respuesta

8

bmail. Sólo tiene que instalar el archivo EXE y ejecutar una línea como esta:

bmail -s myMailServer -f [email protected] -t [email protected] -a "Production Release Performed" 
+0

Aquí no puedo instalar bamil por finalidad de seguridad. Por favor dime si hay alguna forma de solucionar mi problema. – user73628

+0

¿Has probado con otros clientes de correo electrónico de línea de comandos? Una búsqueda en Google enumera muchas herramientas disponibles de manera gratuita. –

6

La manera más fácil es utilizar una aplicación de terceros como han mencionado otros

Si eso no es una Opción: escribí una utilidad simple de sendmail usando vbscript & CDO que llamé desde un script por lotes

Vea los ejemplos aquí http://www.paulsadowski.com/WSH/cdo.htm

2

Utilizamos blat para hacer esto todo el tiempo en nuestro entorno. Lo uso también para conectarme a Gmail con Stunnel. Aquí están los parametros para enviar un archivo

blat -to [email protected] -server smtp.example.com -f [email protected] -subject "subject" -body "body" -attach c:\temp\file.txt 

O usted puede poner ese archivo en el que el cuerpo

blat c:\temp\file.txt -to [email protected] -server smtp.example.com -f [email protected] -subject "subject" 
20

También puede utilizar un script Power Shell:

$smtp = new-object Net.Mail.SmtpClient("mail.example.com") 

if($Env:SmtpUseCredentials -eq "true") { 
    $credentials = new-object Net.NetworkCredential("username","password") 
    $smtp.Credentials = $credentials 
} 
$objMailMessage = New-Object System.Net.Mail.MailMessage 
$objMailMessage.From = "[email protected]" 
$objMailMessage.To.Add("[email protected]") 
$objMailMessage.Subject = "eMail subject Notification" 
$objMailMessage.Body = "Hello world!" 

$smtp.send($objMailMessage) 
+1

upvoted. Pero si no desea hacer un '.ps1', [puede llamarlo directamente desde un lote] (http://stackoverflow.com/a/38604180/2518317) – Hashbrown

+0

La pregunta era sobre BATCH, no Powershell. Poweshell solo es compatible con W7 y posterior –

3

También puede use sendmail. Lo estoy usando en este gancho de subversión para enviar notificaciones por correo electrónico: post-commit hook

1

Existen varios métodos para solucionar este problema.

Mi consejo es utilizar la potente aplicación de consola de Windows freeware SendEmail.

sendEmail.exe -f [email protected] -o message-file=body.txt -u subject message -t [email protected] -a attachment.zip -s smtp.gmail.com:446 -xu gmail.login -xp gmail.password 
6

PowerShell comes with a built in command for it. Entonces, ejecutar directamente desde un archivo .bat:

powershell -ExecutionPolicy ByPass -Command Send-MailMessage^
    -SmtpServer server.address.name^
    -To [email protected]^
    -From [email protected]^
    -Subject Testing^
    -Body 123 

NB-ExecutionPolicy ByPass sólo es necesario si no se ha establecido permisos para el funcionamiento de PS de CMD

También para aquellos que buscan para llamar desde dentro de Powershell, deje todo antes de -Command [inclusive] y ` será su personaje de escape (no ^)

Cuestiones relacionadas