Form-Modelo multi correo de rutina. Enviar email->base datos

y programas personales para otros como tu, puede que te corrijan ;)
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Form-Modelo multi correo de rutina. Enviar email->base datos

Mensaje por BasicOs »

A veces queremos mandar la misma información a la misma gente, solo cambian pocos datos. En este caso usamos modelos o forms, o interfaces más simplificadas en la que solo rellenamos estos datos que cambian.

Este es un form válido para usarlo con múltipes correos, gmail, yahoo, correos propietarios con interfaces especiales, outlook etc.. En la pantalla de este correo rellenamos la información procesada del form:
1.- Una información cambiante que es TIPO
2.- La fecha que queramos
3.- El nombre de una persona o producto, y su abreviatura (iniciales)
4.- El mail destino.


Puede ser un nuevo cliente que enviamos a la central con un TIPO de producto en el que está interesado. O bien sirve como facilitador de envio de correos.

Código: Seleccionar todo

;creado con AutoitPortable Mayo-2014 de autoit.es
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\..\favicon.ico
#AutoIt3Wrapper_Outfile=ayudacorreos.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
;creado con AutoitPortable Mayo-2014 de autoit.es
;falta poner espera en slider

Global $wdestinatario = "[email protected]", $wasunto = "Tipo de asunto **usuario1 del día **fecha "
Global $wtexto = "Buenos días, adjunto se remite para el asunto el **usuario2 del día **fecha " & @CRLF
$wtexto = $wtexto & "Saludos.. **saltodelinea "
Global $wEnvio = "", $wseleccionartodo = 0, $wespera = 2000,$wEleccion=""

;IniWrite("ayudacorreos.ini","Configuracion","destinatario",$wdestinatario)
;IniWrite("ayudacorreos.ini","Configuracion","asunto",$wasunto)
;IniWrite("ayudacorreos.ini","Configuracion","texto",$wtexto)
;IniWrite("ayudacorreos.ini","Configuracion","rapidez",$wespera)



$wdestinatario = IniRead("ayudacorreos.ini", "Configuracion", "destinatario", $wdestinatario)
$wasunto = IniRead("ayudacorreos.ini", "Configuracion", "asunto", $wasunto)
$wtexto = IniRead("ayudacorreos.ini", "Configuracion", "texto", $wtexto)
$wEleccion = IniRead("ayudacorreos.ini", "Configuracion", "eleccion", $wEleccion)
$wEleccion = StringReplace($wEleccion, ",", "|")
$wUsuarioDefecto = IniRead("ayudacorreos.ini", "Configuracion", "usuariodefecto", "Nadia Rodríguez")
$wLosUsuariosDefecto1 = IniRead("ayudacorreos.ini", "Configuracion", "losusuariosdefecto", "Nadia Rodríguez")
$wLosUsuariosDefecto = StringReplace($wLosUsuariosDefecto1, ",", "|")
$wLosUsuariosDefecto = StringReplace($wLosUsuariosDefecto, "*", "")

$wLosDestDefecto1 = IniRead("ayudacorreos.ini", "Configuracion", "losdestinatariosdefecto", "[email protected]")
$wLosDestDefecto = StringReplace($wLosDestDefecto1, ",", "|")
$wLosDestDefecto = StringReplace($wLosDestDefecto, "*", "")

$wespera = IniRead("ayudacorreos.ini", "Configuracion", "rapidez", $wespera)

;HotKeySet("F12","iniciaApp")

;While 1
;	Sleep(250)
; WEnd

Func iniciaApp()
EndFunc   ;==>iniciaApp

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <DateTimeConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#include <Date.au3>
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

#Region ### START Koda GUI section ### Form=c:\documents and settings\eadefezl\mis documentos\downloads\autoit\autoitportable\mis programas\ayudacorreos.kxf
$Form1_1 = GUICreate("Envio de Emails", 314, 277, 269, 153, -1, BitOR($WS_EX_TOPMOST, $WS_EX_WINDOWEDGE))
$bdestinatarios = GUICtrlCreateButton("Destinatarios", 216, 136, 75, 41)
$basunto = GUICtrlCreateButton("Asunto", 216, 180, 75, 33)
$btexto = GUICtrlCreateButton("Texto", 216, 216, 75, 33)
$Group1 = GUICtrlCreateGroup("Introducir datos", 8, 0, 273, 129)
;$iusuario1 = GUICtrlCreateInput($wUsuarioDefecto, 89, 28, 177, 21)

$cdestinatario = GUICtrlCreateCombo("Elegir Email", 89, 19, 177, 21, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
GUICtrlSetData($cdestinatario, $wLosDestDefecto, StringLeft($wLosDestDefecto, StringInStr($wLosDestDefecto, "|") - 1))
$ldestinatario = GUICtrlCreateLabel("Email ...", 18, 19, 49, 17)

$cusuario1 = GUICtrlCreateCombo("Elegir Usuario", 89, 45, 177, 21, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
GUICtrlSetData($cusuario1, $wLosUsuariosDefecto, StringLeft($wLosUsuariosDefecto, StringInStr($wLosUsuariosDefecto, "|") - 1))
$lusuario2 = GUICtrlCreateLabel("Usuario ...", 18, 45, 49, 17)

$Date1 = GUICtrlCreateDate(_Now(), 18, 69, 186, 21)
$ctipos = GUICtrlCreateCombo("Elegir tipo de correo", 20, 96, 185, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
GUICtrlSetData($ctipos, $wEleccion, StringLeft($wEleccion, StringInStr($wEleccion, "|") - 1))

GUICtrlCreateGroup("", -99, -99, 1, 1)
$idestinatarios = GUICtrlCreateInput($wdestinatario, 8, 144, 201, 21)
$iasunto = GUICtrlCreateInput($wasunto, 8, 184, 201, 21)
$itexto = GUICtrlCreateInput($wtexto, 7, 224, 201, 21)
$cborraanterior = GUICtrlCreateCheckbox("Borra Texto", 216, 256, 73, 17)
$bborratexto = GUICtrlCreateButton("B", 288, 256, 20, 20)
$Slider1 = GUICtrlCreateSlider(24, 256, 169, 9)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$wAnadeIni = ""
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $bdestinatarios, $basunto, $btexto, $bborratexto
			Switch $nMsg
				Case $bdestinatarios
					$wEnvio = StringReplace(GUICtrlRead($idestinatarios), "**emails", GUICtrlRead($cdestinatario))
					If Not StringInStr(GUICtrlRead($cdestinatario), $wLosDestDefecto1) Then
						$wAnadeIni = StringStripWS(StringReplace($wLosDestDefecto1, "*", "*" & GUICtrlRead($cdestinatario) & ","), $STR_STRIPLEADING + $STR_STRIPTRAILING + $STR_STRIPSPACES)
						IniWrite("ayudacorreos.ini", "Configuracion", "losdestinatariosdefecto", $wAnadeIni)
						GUICtrlSetData($cdestinatario, GUICtrlRead($cdestinatario), $cdestinatario)
					EndIf
				Case $basunto
					$wEnvio = StringReplace($wasunto, "**usuarioabreviado", poniniciales(GUICtrlRead($cusuario1)))
					If Not StringInStr($cusuario1, $wLosUsuariosDefecto1) Then
						$wAnadeIni = StringStripWS(StringReplace($wLosUsuariosDefecto1, "*", "*" & GUICtrlRead($cusuario1) & ","), $STR_STRIPLEADING + $STR_STRIPTRAILING + $STR_STRIPSPACES)
						IniWrite("ayudacorreos.ini", "Configuracion", "losusuariosdefecto", $wAnadeIni)
						GUICtrlSetData($cusuario1, GUICtrlRead($cusuario1), $cusuario1)
					EndIf
					$wEnvio = StringReplace($wEnvio, "**fecha", GUICtrlRead($Date1))
					$wEnvio = StringReplace($wEnvio, "**usuario", GUICtrlRead($cusuario1))
					$wEnvio = StringReplace($wEnvio, "**tipo", GUICtrlRead($ctipos))
				Case $btexto
					$wEnvio = StringReplace($wtexto, "**usuarioabreviado", poniniciales(GUICtrlRead($cusuario1)))
					$wEnvio = StringReplace($wEnvio, "**saltodelinea", @CRLF)
					$wEnvio = StringReplace($wEnvio, "**usuario", GUICtrlRead($cusuario1))
					$wEnvio = StringReplace($wEnvio, "**fecha", GUICtrlRead($Date1))
					$wEnvio = StringReplace($wEnvio, "**tipo", GUICtrlRead($ctipos))
				Case $bborratexto
					$wEnvio = "{SHIFTDOWN}{PGDN}{PGDN}{PGDN}{PGDN}{END}{SHIFTUP}{SHIFTDOWN}{END}{SHIFTUP}{DEL}"
			EndSwitch
			ToolTip("Click izquierdo del ratón para:  " & $wEnvio, 150, 200)
			WinSetState("Envio de Emails", "", @SW_HIDE)
			If esperaclickDerecho() Then
				If _IsChecked($cborraanterior) And $nMsg = $btexto Then
					;send("^a")					send("{DEL}")
					MouseClick("left")
					Send("{SHIFTDOWN}")
					Send("{PGDN}")
					Send("{PGDN}")
					Send("{PGDN}")
					Send("{PGDN}")
					Send("{PGDN}")
					Send("{PGDN}")
					Send("{END}")
					Send("{SHIFTUP}")
					Send("{DEL}")
					Send("{SHIFTDOWN}")
					Send("{END}")
					Send("{SHIFTUP}")
					Send("{DEL}")

				EndIf
				If $nMsg = $basunto Then
					MouseClick("left")
					MouseClick("left")
					MouseClick("left")
				EndIf
				ClipPut($wEnvio)
				Send($wEnvio)
			EndIf
			ToolTip("¿Más?", 80, 20)
			WinSetState("Envio de Emails", "", @SW_SHOW)
	EndSwitch

WEnd

Func poniniciales($usu)
	Local $wUsuarioA = ""
	$aUsuario = StringSplit($usu, " ")
	For $i = 1 To $aUsuario[0]
		$aUsuario[$i] = StringReplace($aUsuario[$i], " ", "")
		$wUsuarioA = $wUsuarioA & StringLeft($aUsuario[$i], 1) & "."
	Next
	Return $wUsuarioA
EndFunc   ;==>poniniciales
Func _IsChecked($idControlID)
	Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
EndFunc   ;==>_IsChecked




#include <Misc.au3>
#include <MsgBoxConstants.au3>

Func esperaclickDerecho()

	Local $hDLL = DllOpen("user32.dll"), $wReturn = 1, $wquetecla = "Enter"
	For $i = 1 To 150
		Sleep(100)
		If _IsPressed("01", $hDLL) Then
			;ConsoleWrite("_IsPressed - Shift Key was pressed." & @CRLF)
			; Wait until key is released.
			While _IsPressed("01", $hDLL)
				Sleep(100)
			WEnd
			Sleep(150)
			$wReturn = 1
			ExitLoop
		EndIf
		;ConsoleWrite("_IsPressed - Shift Key was released." & @CRLF)
		;ElseIf _IsPressed("1B", $hDLL) Then "The Esc Key was pressed, therefore we will close the application.")
	Next
	If $i > 50 Then MsgBox(0, "Ayuda Correos", "Tiempo de espera superado sin pulsar " & $wquetecla)

	DllClose($hDLL)

	If $wReturn = 0 Then
		MsgBox(0, "Ayuda Correos", "Saliendo del programa")
		Exit
	EndIf
	Return $wReturn
EndFunc   ;==>esperaclickDerecho

Al enviar estos correos de esta manera podemos generar en el correo destino una base de datos de correos normalizados (basado en el buscador del correo) donde podremos localizar información facilmente cuando queramos. Usamos el correo para la gestión y almacenamiento de información preparada para ser usada por una futura base de datos o un sistema de gestión.
Fichero ini donde está el modelo a rellenar, y se almacenan los datos que se van añadiendo, para posterior uso.

Código: Seleccionar todo

[Configuracion]
losusuariosdefecto=*Eduardo HERNANDEZ RODRIGUEZ,Jose GONZÁLEZ GARCÍA
losdestinatariosdefecto=*[email protected],[email protected]
destinatario=**emails
asunto=**tipo **usuarioabreviado del día **fecha 
texto=Buenos días, adjunto se remite **tipo del usuario **usuario del día **fecha **saltodelinea Saludos 
usuariodefecto=José Suarez
eleccion="COMPRA DE PRODUCTO,REPARACION,PAGO,CONSULTA,CITA,MAS INFO"

rapidez=2000

Para que funcione hacemos click en cualquiera de los tres botones: Destinatario, asunto o texto. Y luego clicamos en el correo para "PEGAR" la información de lo que elegimos. El asunto (por ejemplo), que viene modificada por el modelo previo. :smt024 :smt024

Este es un Form creado con AutoitPortable vers. Mayo-2014. Es una versión Beta funcional. Ya que hay detalles y mejoras pendientes como la rapidez de pegado.... :) Bienvenidas la participación y mejoras.


Salu22:)
Adjuntos
ayudacorreos.zip
Fuentes, ini config y ejecutable
(513.47 KiB) Descargado 303 veces
ayudacorreo.jpg
ayudacorreo.jpg (22.89 KiB) Visto 3230 veces
Responder