Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: vpluque en 30 Marzo 2011, 13:44 pm



Título: Script Batch para enviar email
Publicado por: vpluque en 30 Marzo 2011, 13:44 pm
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


Título: Re: Script Bash para envial email
Publicado por: madpitbull_99 en 30 Marzo 2011, 14:02 pm
Es Bash o Batch?

En Bash se puede hacer así:

Código
  1. #!/bin/bash
  2. # asunto
  3. SUBJECT="SET-EMAIL-SUBJECT"
  4. # Destinatario
  5. EMAIL="usuario@gmail.com"
  6. # Mensaje
  7. EMAILMESSAGE="/tmp/emailmessage.txt"
  8. echo "Esto es una prueba"> $EMAILMESSAGE
  9. echo "Probando" >>$EMAILMESSAGE
  10. # llamar a /bin/mail para enviarlo
  11. /bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE

Esto va en Scripting.


Título: Re: Script Bash para envial email
Publicado por: vpluque en 30 Marzo 2011, 14:04 pm
lo queria hacer en batch, en windows


Título: Re: Script Bash para envial email
Publicado por: madpitbull_99 en 30 Marzo 2011, 14:16 pm
Pues el titulo dice Bash. Decídete!

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

Código
  1. @ECHO OFF
  2. SET ERRORS=0
  3. :: Use your own mappings and search strings here
  4. NET USE P: | FIND /I "%username%" >NUL 2>NUL
  5. IF ERRORLEVEL 1 CALL :ErrorMsg P:
  6. NET USE S: | FIND /I "system" >NUL 2>NUL
  7. IF ERRORLEVEL 1 CALL :ErrorMsg S:
  8. :: Create an e-mail message if any errors were detected
  9. IF %ERRORS% GEQ 1 CALL :Mail
  10. :: Clear variables used in this batch file
  11. FOR %%A IN (BODY DATE ERRORS LINE MESSAGE TIME) DO SET %%A=
  12. GOTO :EOF
  13.  
  14. :ErrorMsg
  15. SET /A ERRORS = %ERRORS% + 1
  16. NET USE %1 >NUL 2>NUL
  17. SET BODY=%BODY%%%0D%%0ADrive%%20%1%%20not%%20mapped
  18. GOTO :EOF
  19. )
  20. FOR /F "TOKENS=3* DELIMS= " %%A IN ('NET USE %1 ^| FIND "Local name"') DO SET MESSAGE=Drive%%20%%A%%20mapped%%20to%%20
  21. :: Replacement of backslashes "\" by "%%5C"
  22. :: prevents interpretation of "\n" as CR/LF
  23. FOR /F "TOKENS=3,4* DELIMS=\ " %%A IN ('NET USE %1 ^| FIND "Remote name"') DO SET MESSAGE=%MESSAGE%%%5C%%5C%%A%%5C%%B
  24. SET BODY=%BODY%%%0D%%0A%MESSAGE%
  25. GOTO :EOF
  26.  
  27. :Mail
  28. FOR /F "TOKENS=2*" %%A IN ('DATE/T') DO SET DATE=%%A
  29. FOR /F %%A IN ('TIME/T') DO SET TIME=%%A
  30. 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%
  31. GOTO :EOF
_Fuente (http://www.robvanderwoude.com/email.php) del script.


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

Código
  1. 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ódigo:
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.


Título: Re: Script Bash para envial email
Publicado por: vpluque en 30 Marzo 2011, 14:30 pm
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


Título: Re: Script Batch para enviar email
Publicado por: SuperDraco en 31 Marzo 2011, 00:53 am
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


Título: Re: Script Batch para enviar email
Publicado por: SuperDraco en 1 Abril 2011, 04:05 am
Me uno al problema...

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


¿Porque este comando en Blat no me funciona?

Código:
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:

Código:
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í:

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

y el resultado es:

Código:
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.


Título: Re: Script Batch para enviar email
Publicado por: Esgrimidor en 22 Junio 2012, 19:52 pm
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