Programa para Enviar correo electronico (Email)...

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
melvinhn
Hacker del Foro
Mensajes: 75
Registrado: 16 Jul 2011, 22:14
Ubicación: Honduras, Cortes, Puerto Cortes, Col Miraflores
Contactar:

Programa para Enviar correo electronico (Email)...

Mensaje por melvinhn »

Bueno pues aquí siempre necesitando de la ayuda de ustedes
resulta que tengo un script para enviar correos electrónico que corre bien y me ha funcionado de maravilla

pero el problema que tengo es que quiero adaptarlo a un programa que estoy haciendo siempre con Autoit...

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$VentanaAplicacion = GUICreate("Enviar correo...", 450, 420, 200, 125)
$Para = GUICtrlCreateLabel("Para:", 25, 15, 30, 20)
$ParaInput = GUICtrlCreateInput("", 70, 15, 350, 20)
$De = GUICtrlCreateLabel("De:", 25, 40, 20, 20)
$DeInput = GUICtrlCreateInput("", 70, 40, 350, 20)
$Asunto = GUICtrlCreateLabel("Asunto:", 25, 65, 40, 20)
$AsuntoInput = GUICtrlCreateInput("", 70, 65, 350, 20)
$Texto = GUICtrlCreateInput("", 50, 130, 350, 200)
GUICtrlSetData(-1, "")
$Groupo = GUICtrlCreateGroup("Texto a enviar...", 20, 100, 400, 240)
$AcercaDe = GUICtrlCreateLabel("Softcom Systems Incorporated", 120, 370, 200, 35)
$Enviar = GUICtrlCreateButton("Enviar", 25, 360, 65, 35)
GUISetState(@SW_SHOW)

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
   Case $GUI_EVENT_CLOSE
      Exit
   Case $Enviar
      ;Declaramos las globales
Global $Server="mail.ivermedia.com"
Global $Name="Melvin"
Global $FromAddress=$DeInput; el correo que lo envia
Global $ToAddress=$ParaInput; correo de a quien envia
Global $CCAddress="";cc"
Global $BCCAddress="";bcc"
Global $Subject=$AsuntoInput; el asunto
Global $Body=$Texto
Global $Attach= ""
Global $Importance="";normal"
Global $User="[email protected]"
Global $Password="cvkjsp0lvk9"
Global $Port=25
Global $Ssl=0
Global $MSend
Global $OMyRet[2]
Global $OMyError=ObjEvent("AutoIt.Error", "MyErrFunc")

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

Func _INetSmtpMailCom($S_SmtpServer, $S_FromName, $S_FromAddress, $S_ToAddress, $S_Subject="", $As_Body="", $S_AttachFiles="", $S_CcAddress="", $S_BccAddress="", $S_Importance="Normal", $S_Username="", $S_Password="", $IPPort=25, $Ssl=0)
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
      Exit
   EndSwitch
WEnd
Gracias por sus ayudas...
Última edición por melvinhn el 19 Oct 2011, 03:24, editado 1 vez en total.
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Programa para Enviar correo electronico (Email)...

Mensaje por arkcrew »

Proporcioname más datos de que quieres conseguir exactramente y te podré ayudar.. un saludo!
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: Programa para Enviar correo electronico (Email)...

Mensaje por melvinhn »

Simplemente quiero enviar un correo de la siguiente manera
al correr el scrip te saldra la siguiente ventana el cual habla por si sola..
lleno los campos en la ventana y listo le doy enviar...

Imagen
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Programa para Enviar correo electronico (Email)...

Mensaje por BasicOs »

Como quieres adaptarlo?
Has creado algún código para esto?
Salu22:)
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Programa para Enviar correo electronico (Email)...

Mensaje por arkcrew »

Para obtener el valor de los campos, puedes utilizar la función GUICtrlRead($variable) con eso, por ejemplo aplicado a $input obtendrías el contenido del input1 etc, no sé si me explico..,.
Saludos
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: Programa para Enviar correo electronico (Email)...

Mensaje por melvinhn »

Buenos me ha quedado de la siguiente manera
gracias por todo

Imagen

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
Última edición por melvinhn el 31 Jul 2012, 06:43, editado 2 veces en total.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Programa para Enviar correo electronico (Email)...

Mensaje por Ximorro »

Tiene buena pinta.
Veo un fallo organizativo: ¡no se declaran variables globales dentro de funciones! Dentro de las funciones sólo se declaran locales.
Otra cosa es que las variables globales las puedes usar dentro de funciones, pero lo que es declararlas, ha de hacerse en el código principal.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Responder