Página 1 de 1

Programa para Enviar correo electronico (Email)...

Publicado: 18 Oct 2011, 20:04
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...

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

Publicado: 18 Oct 2011, 22:56
por arkcrew
Proporcioname más datos de que quieres conseguir exactramente y te podré ayudar.. un saludo!

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

Publicado: 19 Oct 2011, 03:15
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

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

Publicado: 19 Oct 2011, 14:26
por BasicOs
Como quieres adaptarlo?
Has creado algún código para esto?
Salu22:)

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

Publicado: 20 Oct 2011, 09:52
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

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

Publicado: 24 Oct 2011, 23:53
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

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

Publicado: 25 Oct 2011, 09:01
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.