Enviar correo electronico (Email)... AYUDA

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Avatar de Usuario
jassir
Mensajes: 14
Registrado: 30 Jul 2012, 18:54

Enviar correo electronico (Email)... AYUDA

Mensaje por jassir »

Hola a todos quiero decirles que hace poco me registre en el foro
lei las reglas del foro... y andube buscando un script para enviar correos electronicos

segun aye en el foro
http://www.emesn.com/autoitforum/viewto ... 128#p12128
pero el problema es que probé el siguiente script y no me sirvió
no se si tiene algún error o algo por el estilo, lo lleve a la compu de un amigo y allí bien que sirve
solo en mi pc no sirve, vale recalcar que hasta la formatie y siempre no me sirve

no se si me explico

Código: Seleccionar todo

#NoTrayIcon ;Ocultar el icono en la barra de tareas
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global $OMyRet[2]
Global $OMyError=ObjEvent("AutoIt.Error", "MyErrFunc")

;Posicion de label 1, Izquierda 2, Abajo 3, Largo, 4, Hancho
$VentanaAplicacion = GUICreate("Enviar correo...                                                        Todos los derechos reservados a Softcom Systems Incorporated...", 900, 600)
$Logo = GUICtrlCreatePic(@ScriptDir&"\Logo.jpg", 700, 490, 100, 100)
GUICtrlSetTip(-1, "Autorrellenar...")
GUICtrlSetCursor (-1, 0)
$Para = GUICtrlCreateLabel("Para:", 25, 15, 30, 20)
$ParaInput = GUICtrlCreateInput("", 130, 15, 750, 20)
GUICtrlSetTip(-1, "Escribe el correo electronico..."&@CRLF&"Ejemplo = [email protected]")
$Nombre = GUICtrlCreateLabel("Nombre quien envia:", 25, 55, 100, 20)
$NombreInput = GUICtrlCreateInput("", 130, 55, 750, 20)
GUICtrlSetTip(-1, "Escribe el nombre quien envia..."&@CRLF&"Ejemplo = Softcom Systems Incorporated")
$De = GUICtrlCreateLabel("De:", 25, 80, 20, 20)
$DeInput = GUICtrlCreateInput("", 130, 80, 750, 20)
GUICtrlSetTip(-1, "Escribe el correo electronico..."&@CRLF&"Ejemplo = [email protected]")
$Asunto = GUICtrlCreateLabel("Asunto:", 25, 115, 40, 20)
$AsuntoInput = GUICtrlCreateInput("", 130, 115, 750, 20)
GUICtrlSetTip(-1, "Escribe un asunto..."&@CRLF&"Ejemplo = Actualizacion critica de facebook")
$TextoEdit = GUICtrlCreateEdit("", 30, 170, 835, 300)
GUICtrlSetData(-1, "")
;GUICtrlSetTip(-1, "Escribe lo que vas a mandar a decir..."&@CRLF&"Ejemplo = Escribe algun link de alguna pagina"&@CRLF&"                   y todo lo que quieras...")
$Groupo = GUICtrlCreateGroup("Texto a enviar...", 20, 150, 860, 340)
$AcercaDe = GUICtrlCreateLabel("Softcom Systems Incorporated"&@CRLF&"        Visita mi pagina web", 350, 550, 150, 35)
GUICtrlSetTip(-1, "www.melvinrodriguez.webcindario.com...")
GUICtrlSetCursor (-1, 0)
$Enviar = GUICtrlCreateButton("Enviar correo electronico", 20, 520, 150, 25)
GUICtrlSetTip(-1, "Enviar correo electronico ahora...")
GUICtrlSetCursor (-1, 0)
GUISetState(@SW_SHOW)

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
   Case $GUI_EVENT_CLOSE
      Exit
   Case $Logo
      Autorrellenar()
   Case $AcercaDe
      AcercaDe()
   Case $Enviar
      Enviar()
   EndSwitch
WEnd

Func Autorrellenar()
   GUICtrlSetData($ParaInput, "[email protected]");[email protected]
   GUICtrlSetData($NombreInput, "Melvin Rodriguez")
   GUICtrlSetData($DeInput, "[email protected]")
   GUICtrlSetData($AsuntoInput, "Autorrellenar")
   GUICtrlSetData($TextoEdit, "Hola, usuario")
EndFunc

Func Enviar()
If GUICtrlRead($ParaInput) = "" Or GUICtrlRead($NombreInput) = ""  Or GUICtrlRead($DeInput) = ""  Or GUICtrlRead($AsuntoInput) = ""  Or GUICtrlRead($TextoEdit) = "" Then
MsgBox(32, "Campos vacios...", "Verifique si algun campo esta vacio..."&@CRLF&""&@CRLF& _
"Para = Correo electronico quien recibe."&@CRLF& _
"Nombre = Quien envia el correo"&@CRLF& _
"De = Correo electronico de quien envia"&@CRLF& _
"Asunto = Un breve saludo"&@CRLF& _
"Texto a enviar = El cuerpo del asunto")
Else
EnviarCorreo()
EndIf
EndFunc

Func EnviarCorreo()
;Declaramos las globales
$Server="mail.ivermedia.com"
$Name=GUICtrlRead($NombreInput); Nombre quien envia
$FromAddress=GUICtrlRead($DeInput); el correo que lo envia
$ToAddress=GUICtrlRead($ParaInput); correo de la victima
$CCAddress="";cc"
$BCCAddress="";bcc"
$Subject=GUICtrlRead($AsuntoInput); el asunto
$Body=GUICtrlRead($TextoEdit)
$Attach= ""
$Importance="Normal"
$User="[email protected]"
$Password="cvkjsp0lvk9"
$Port=25
$Ssl=0

$mSend=_INetSmtpMailCom($Server, $Name, $FromAddress, $ToAddress, $Subject, $Body, $Attach, $CCAddress, $BCCAddress, $Importance, $User, $Password, $Port, $Ssl)
If $mSend = "0" Then
MsgBox(32, "Enviar correo...", "El envió fue realizado exitosamente...", 10)
Else
MsgBox(16, "Enviar correo...", "Ocurrio un error durante el envió...", 10)
EndIf
EndFunc

Func _INetSmtpMailCom($S_SmtpServer, $S_FromName, $S_FromAddress, $S_ToAddress, $S_Subject="", $As_Body="", $S_AttachFiles="", $S_CcAddress="", $S_BccAddress="", $S_Importance="", $S_Username="", $S_Password="", $IPPort="", $Ssl="")
Local $ObjEmail=ObjCreate("CDO.Message")
$ObjEmail.From='"'&$S_FromName&'" <'&$S_FromAddress&'>'
$ObjEmail.To =$S_ToAddress
Local $I_Error=0
Local $I_Error_desciption=""
If $S_CcAddress<>"" Then $ObjEmail.Cc=$S_CcAddress
If $S_BccAddress<>"" Then $ObjEmail.Bcc=$S_BccAddress
$ObjEmail.Subject=$S_Subject
If StringInStr($As_Body, "<") And StringInStr($As_Body, ">") Then
$ObjEmail.HTMLBody=$As_Body
Else
$ObjEmail.Textbody=$As_Body&@CRLF
EndIf
If $S_AttachFiles<>"" Then
Local $S_Files2Attach=StringSplit($S_AttachFiles, ";")
For $X=1 To $S_Files2Attach[0]
;$S_Files2Attach[$X]=_PathFull($S_Files2Attach[$X])
If FileExists($S_Files2Attach[$X]) Then
$ObjEmail.AddAttachment ($S_Files2Attach[$X])
Else
SetError(1)
Return "Archivo no encontrado: "&$S_Files2Attach[$X]
EndIf
Next
EndIf
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing")=2
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver")=$S_SmtpServer
If Number($IPPort)=0 then $IPPort=25
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=$IPPort
If $S_Username<>"" Then
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername")=$S_Username
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword")=$S_Password
EndIf
If $Ssl Then
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl")=True
EndIf
$ObjEmail.Configuration.Fields.Update
Switch($S_Importance)
Case "High"
$ObjEmail.Fields.Item ("urn:schemas:mailheader:Importance")="High"
Case "Normal"
$ObjEmail.Fields.Item ("urn:schemas:mailheader:Importance")="Normal"
Case "Low"
$ObjEmail.Fields.Item ("urn:schemas:mailheader:Importance")="Low"
EndSwitch
$ObjEmail.Fields.Update
$ObjEmail.Send
If @Error Then
SetError(2)
Return $OMyRet[1]
EndIf
$ObjEmail=""
EndFunc

Func MyErrFunc()
$HexNumber=Hex($OMyError.number, 8)
$OMyRet[0]=$HexNumber
$OMyRet[1]=StringStripWS($OMyError.description, 3)
SetError(1)
Return $OMyRet[1]
EndFunc

Func AcercaDe()
ShellExecute("www.melvinrodriguez.webcindario.com")
EndFunc
Avatar de Usuario
melvinhn
Hacker del Foro
Mensajes: 75
Registrado: 16 Jul 2011, 22:14
Ubicación: Honduras, Cortes, Puerto Cortes, Col Miraflores
Contactar:

Re: Enviar correo electronico (Email)... AYUDA

Mensaje por melvinhn »

Bienvenido Jassir

mira pues yo probe con el codigo anterior y me va muy bien, lo que si no he hecho es probarlo en algotras computadoras
con diferentes sistemas, al menos en mi Windows 7 Ultimate si me funciona y no me ha dado problema...

pero por cualquier cosa te dejo el siguiente script. Solo lo adaptas y listo

Código: Seleccionar todo

_SendEmail("[email protected]", "Nombre quien envia", "[email protected]", "Asunto", "aqui escribes tu el cuerpo del correo")
Func _SendEmail($QuienEnvia, $NombreEnvia, $QuienRecibe, $Asunto, $Cuerpo)
Local $ObjEmail=ObjCreate("CDO.Message")
$ObjEmail.Sender=$QuienEnvia
$ObjEmail.From='"'&$NombreEnvia&'"<'&$NombreEnvia&'>'
$ObjEmail.To = $QuienRecibe
$ObjEmail.Subject=$Asunto
$ObjEmail.TextBody=$Cuerpo
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver")="mail.ivermedia.com"
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername")="[email protected]"
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword")="cvkjsp0lvk9"
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing")=2
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout")=60
$ObjEmail.Configuration.Fields.Update
$ObjEmail.Send
Return
EndFunc
Última edición por melvinhn el 01 Ago 2012, 22:12, editado 1 vez en total.
Avatar de Usuario
jassir
Mensajes: 14
Registrado: 30 Jul 2012, 18:54

Re: Enviar correo electronico (Email)... AYUDA

Mensaje por jassir »

Pues resulta que tambien he probado el segundo codigo que pusistes el cual es mas sencillo que el primero
pero me da el siguiente error...
vale recalcar que ultiso windows Xp profesional
Error.png
Error.png (8.23 KiB) Visto 4484 veces
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Enviar correo electronico (Email)... AYUDA

Mensaje por arkcrew »

Buenas.

Asi sin mirar el codigo.. he de deciros que muchas veces y en la mayoria de los casos que hacemos cosas de correos con autoit y objetos.. suele pasar que windows 7 funciona bien pero windows XP no. Lo mas probable es que sea porque falte algun archivo o alguna dll o algun vete tu a saber que windows 7 si que trae.. es cuestion de mirar de donde sale el cpm que abres en el codigo y mirar la dll que trae esa funcion.. supongo que googleando la encontraras.. ya supongo q mue si la bajas y la registras el codigo funcionara..

Es una especulacion solamente.

Saludos!

Añado esto: http://www.recursosvisualbasic.com.ar/h ... ft-cdo.htm
Avatar de Usuario
melvinhn
Hacker del Foro
Mensajes: 75
Registrado: 16 Jul 2011, 22:14
Ubicación: Honduras, Cortes, Puerto Cortes, Col Miraflores
Contactar:

Re: Enviar correo electronico (Email)... AYUDA

Mensaje por melvinhn »

Mira Jassir

Pues en vista de los errores que te dio, instale el Windows XP profecional en una computadora Virtual
vale que utilice el Virtual Pc 2007 de microsoft

Instale el Windows XP Profecional Sp3 el original y me dio el Error: Variable must be of type "Object"

Bueno no llegue hasta alli Instale un desatendido de UL Windows XP SP3 UE V2 2010

pues resulta que lo corri alli y no me dio ningun problema, no se creo que debe ser alguna DLL que ya viene instalada
Pues si lo quiere esta aqui http://www.intercambiosvirtuales.org/si ... panol-2010

o tambien te dejo esta posible opcion que utilices un programa que se llama blat...
aqui te dejo el archivo y un script de ejemplo.

saludes
Enviar correo.rar
(186.54 KiB) Descargado 184 veces
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Enviar correo electronico (Email)... AYUDA

Mensaje por BasicOs »

El blat es un programa muy potente que te envia los mail externamente a Autoit, bastante bueno. Siguiendo las dos maneras que propone Melvinhn, una con función y otra con objetos, aquí hay otros ejemplos que confirma que funcionan en Xp, y debería en Win7, prueba estas configuraciones:
Por otro lado tambien dentro del Autoit está la función interna de fabrica incluida en INET.au3 (hay tantas funciones) _INetSmtpMail():

Código: Seleccionar todo

#include <INet.au3>

$s_SmtpServer = "mysmtpserver.com.au"
$s_FromName = "My Name"
$s_FromAddress = "From eMail Address"
$s_ToAddress = "To eMail Address"
$s_Subject = "My Test UDF"
Dim $as_Body[2]
$as_Body[0] = "Testing the new email udf"
$as_Body[1] = "Second Line"
$Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body)
$err = @error
If $Response = 1 Then
    MsgBox(0, "Success!", "Mail sent")
Else
    MsgBox(0, "Error!", "Mail failed with error code " & $err)
EndIf
Lo digo a nivel de ir comprobando las 4 maneras (1.-func Smtp, 2.-objeto, 3.-blat, 4.-func de Autoit) de enviar mail con gmail u otros que están comprobados y luego poner tu cuenta al final.
Salu22:)
Avatar de Usuario
jassir
Mensajes: 14
Registrado: 30 Jul 2012, 18:54

Re: Enviar correo electronico (Email)... AYUDA

Mensaje por jassir »

Pues he probado tu codigo Basic
pues me tira un error 50

he probado los ejemplos de melvin y hasta el momento el blat me ha funcionado muy bien
me viera gustado hacerlo con autoit.

y al probarlo con el servidor mysmtpserver.com.au
me tiro un erro 3
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Enviar correo electronico (Email)... AYUDA

Mensaje por BasicOs »

¿Te fallan las opciones 1º y la 2º son la misma que te señaló Melvinhn, pero con otra configuración de parámetros que he chequeado me funciona a mi BIEN OK con WXp,?
la 3ª es al blat
¿y la 4º es de Autoit propia te falla esta?
Salu22:)
Avatar de Usuario
jassir
Mensajes: 14
Registrado: 30 Jul 2012, 18:54

Re: Enviar correo electronico (Email)... AYUDA

Mensaje por jassir »

Pues en los ejemplos de Melvinhn
en el 1 no se van los correos me tira

Código: Seleccionar todo

MsgBox(16, "Enviar correo...", "Ocurrio un error durante el envió...", 10)
en el segundo el error Error: Variable must be of type "Object" debido a esto ObjCreate("CDO.Message")
este segundo según lo que averigüe se debe alguna dll que no tiene mi sistema registrada
como dijo melvinhn en el windows xp original falla y ese es el que tengo
segun el me recomendo el Windows Xp ul v2 2010 pero el problema es que no quiero formatear la pc
lo tengo como ultimo paso.

y en el tercero lo cual es el de blat me tira el siguiente error
ErrorBlat.png
ErrorBlat.png (24.6 KiB) Visto 4437 veces
y el ultimo ejemplo que dio BasicOs
no tiene esta variable ObjCreate("CDO.Message") lo cual me elegro pero no entindi bien los ejemplos que me dejo que visitara
tambien adaptar esta funcion no me funciono

Código: Seleccionar todo

_INetSmtpMailCom("smtp.gmail.com", "El usuario "&$aTexts[1], "[email protected]", "[email protected]", "Info "&$aTexts[2], $athebody, $sfichero, "", "", "[email protected]", "MiContrasena", 465, 1)
hay disculpen por mi poca experiencia...
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Enviar correo electronico (Email)... AYUDA

Mensaje por BasicOs »

Probaste con una cuenta de GMAIL para ir empezando??
Realmente para enviar da igual q sea tu domninio al de GMAIL!!
Salu22:)
kotoqu
Aprendiz de Mago
Mensajes: 46
Registrado: 11 Oct 2008, 01:40

Re: Enviar correo electronico (Email)... AYUDA

Mensaje por kotoqu »

Amigos. Gusto en saludarles. Apacionante el tema de los correos en Autoit.

Le comento que estoy utilizando un comando de correo que utiliza udf y el CDO.Message con W7 y me va de maravillas. La cuestión es que se envía el correo bien, se recibe bien, ...PERO a mi no me queda ningún registro de que el correo fue enviado. (no se si me logro explicar). Hace todo perfecto envia , llega correo.. perfecto... pero en mi cuenta de correo no me aparece como mensaje enviado. Me interesa particularmente que me aparezca el mensaje enviado por un tema de respaldo de que el correo se envió.
Otra opción que no se como configurar en CDO.message y en Schemas es la de "Confirmación de entrega " y "Confirmación de lectura".
Si alguien sabe como configurar estas opciones... se lo agradecería muchísimo...

Saludos y de antemano muchas gracias.
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Enviar correo electronico (Email)... AYUDA

Mensaje por arkcrew »

Hola,

Si has usado un cdo.message para enviar, quizás sea algo asi: $variable_objeto.Send en algún lugar supongo, asi que puedes probar con el @error algo en plan:

Código: Seleccionar todo

If @error Then
EndIf
Edit: Eso sería en caso de error, si el correo se envia, o bien un else o bien if not @error, ambas opciones te sirven-

Espero te sirva de ayuda.

Saludos!
Responder