Script Batch para enviar email

Iniciado por vpluque, 30 Marzo 2011, 13:44 PM

0 Miembros y 1 Visitante están viendo este tema.

vpluque

Hola!
estaria interesado en mandar un email con un texto y si es posible un archivo adjunto desde un archivo.bat

Se puede realizar?

he probado con:

echo hola | mail ejemplo@gmail.com

y nada!!

Gracias

madpitbull_99

Es Bash o Batch?

En Bash se puede hacer así:

Código (bash) [Seleccionar]
#!/bin/bash
# asunto
SUBJECT="SET-EMAIL-SUBJECT"
# Destinatario
EMAIL="usuario@gmail.com"
# Mensaje
EMAILMESSAGE="/tmp/emailmessage.txt"
echo "Esto es una prueba"> $EMAILMESSAGE
echo "Probando" >>$EMAILMESSAGE
# llamar a /bin/mail para enviarlo
/bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE


Esto va en Scripting.



«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

vpluque

lo queria hacer en batch, en windows

madpitbull_99

Pues el titulo dice Bash. Decídete!

En Batch he visto algunos códigos aunque no he probado ninguno:

Código (dos) [Seleccionar]
@ECHO OFF
SET ERRORS=0
:: Use your own mappings and search strings here
NET USE P: | FIND /I "%username%" >NUL 2>NUL
IF ERRORLEVEL 1 CALL :ErrorMsg P:
NET USE S: | FIND /I "system" >NUL 2>NUL
IF ERRORLEVEL 1 CALL :ErrorMsg S:
:: Create an e-mail message if any errors were detected
IF %ERRORS% GEQ 1 CALL :Mail
:: Clear variables used in this batch file
FOR %%A IN (BODY DATE ERRORS LINE MESSAGE TIME) DO SET %%A=
GOTO :EOF

:ErrorMsg
SET /A ERRORS = %ERRORS% + 1
NET USE %1 >NUL 2>NUL
IF ERRORLEVEL 1 (
SET BODY=%BODY%%%0D%%0ADrive%%20%1%%20not%%20mapped
GOTO :EOF
)
FOR /F "TOKENS=3* DELIMS= " %%A IN ('NET USE %1 ^| FIND "Local name"') DO SET MESSAGE=Drive%%20%%A%%20mapped%%20to%%20
:: Replacement of backslashes "\" by "%%5C"
:: prevents interpretation of "\n" as CR/LF
FOR /F "TOKENS=3,4* DELIMS=\ " %%A IN ('NET USE %1 ^| FIND "Remote name"') DO SET MESSAGE=%MESSAGE%%%5C%%5C%%A%%5C%%B
SET BODY=%BODY%%%0D%%0A%MESSAGE%
GOTO :EOF

:Mail
FOR /F "TOKENS=2*" %%A IN ('DATE/T') DO SET DATE=%%A
FOR /F %%A IN ('TIME/T') DO SET TIME=%%A
START mailto:helpdesk@ourdomain.com?subject=Drive%%20mapping%%20error^&body=At%%20%DATE%,%%20%TIME%,%%20user%%20%USERNAME%%%20encountered%%20the%%20following%%20drive%%20mapping%%20error(s)%%20on%%20%COMPUTERNAME%:%%0D%%0A%BODY%
GOTO :EOF

_Fuente del script.


Fíjate que es fácil de hacer, la línea mas importante es esta:

Código (dos) [Seleccionar]
START mailto:helpdesk@ourdomain.com?subject=Drive%%20mapping%%20error^&body=At%%20%DATE%,%%20%TIME%,%%20user%

Si tienes instalado Exchange puedes usar MAPISend.exe:

C:\> MAPISend –u "Exchange Profile" –r mad@ehn.net –s "Asunto del Email?" –m "Enviando email desde MAPISend!!!"


Aquí(petri.co.il/send_mail_from_script.htm) tienes mas formas de enviar un email desde la consola.



«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

vpluque

Ese batch no me vale ya que sale la ventana de enviar correo y yo lo que quiero es que no salga nada por pantalla, simplemente enviar el correo y ya!

he visto que se puede mandar con un programa que se llama blat, pero no se configurarlo.
Alguien lo ha utilizado??

Saludos

SuperDraco

Puedes ocultar la salida de cualquier comando añadiendole ">nul 2>&1" al final del comando, así que el del mapisend que te ha dicho madpitbull te sirve, bueno, lo que te he dicho te sirve con todos,no muestra NADA en la pantalla, otra cosa es que la funcion del comando de mandar emails funcione correctamente... xD
No he vuelto, solo estoy de paso.

SuperDraco

#6
Me uno al problema...

Aqui podeis descargar el blat...
http://sourceforge.net/projects/blat/files/


¿Porque este comando en Blat no me funciona?

blat.exe -server smtp.live.com -f csg1986@hotmail.com -u csg1986 -pw MIPASSWORD -subject "hola que pasa" -body "kekekekepasa" -to pitoloko1986@gmail.com



Obtengo como resultado este error:


Blat v2.6.2 w/GSS encryption (build : Feb 25 2007 12:06:19)

Sending stdin.txt to pitoloko1986@gmail.com
Subject: hola que pasa
Login name is csg1986@hotmail.com
The SMTP server does not require AUTH LOGIN.
Are you sure server supports AUTH?
The SMTP server does not like the sender name.
Have you set your mail address correctly?



dice algomalo del auth, así que he intentado hacerlo sin -u y pw así:

blat.exe -server smtp.live.com -f csg1986@hotmail.com -subject "hola que pasa" -body "kekekekepasa" -to pitoloko1986@gmail.com

y el resultado es:

Sending stdin.txt to pitoloko1986@gmail.com
Subject: hola que pasa
Login name is csg1986@hotmail.com
The SMTP server does not like the sender name.
Have you set your mail address correctly?



Tambien he probado a hacer lo mismo cambiando de servidor, usando smtp.google.com, y en ese no me dice nada... pero tampoco se manda el email.
No he vuelto, solo estoy de paso.

Esgrimidor

Me interesa revivir este post tan antiguo ya que aparece un código batch, que modificado, me podría valer.
Yo utilizo el cliente Thunderbird, pero en modo portable.
De forma que :

Me interesa que el batch no funcione mirando cuál es el cliente de correo por defecto. He puesto TB porque también lo tengo instalado en modo no portable.
Pero todo está en la versión portable, cuentas definidas, y todos los correos envíados y recibidos; están en la versión portable.

De forma que :
1) El batch que aparece más arriba me funciona bien si tengo abierta mi versión portable
2) no me funciona bien si no tengo abierto el cliente de correo TB portable, porque va a abrir la versión portable donde ni siquiera tengo definidas las cuentas, y que además no me interesa que el email envíado se me registre allí.

Luego me gustaría un batch que pudiera configurar para decirle que cliente de correos tiene que usar, independientemente de la configuración windows (creo que hay un modo de engañar al s.o. cuando se tiene TB portable, pero no me lo he mirado).

Gracias