157 lines
6.9 KiB
Plaintext
157 lines
6.9 KiB
Plaintext
{
|
|
------------------------------------------------------------------------
|
|
FORMULARIO : SENDEMAIL
|
|
OBJETIVO : Herramienta para enviar emails masivos
|
|
PROGRAMADOR : Ing. Juan Soto.
|
|
FECHA REALIZACION : Diciembre 7, 2021
|
|
|
|
-----------------------------------------------------------------------------
|
|
}
|
|
IMPORT JAVA javax.mail.Session
|
|
|
|
GLOBALS "noprgb000.4gl"
|
|
|
|
DEFINE genera CHAR(2),
|
|
xingresos,xdescuentos DEC(12,2),
|
|
cuenta_envio,xtipo,xsec INT,
|
|
estado_Envio VARCHAR(50),
|
|
vendedorEmail,emailCC VARCHAR(60),cuerpo_correo VARCHAR(2000),
|
|
subject VARCHAR(100), perfil,procedimiento VARCHAR(60),nombre_file,nombre_empleado VARCHAR(80)
|
|
|
|
DEFINE sesion Session,
|
|
password,s_protocol,respuesta,mensajes STRING
|
|
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL STARTLOG("emailmarketing.txt")
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(3) RETURNING subject
|
|
|
|
CONNECT to "smarmotech" USER usuarios USING clave
|
|
CALL enviaemailMain()
|
|
END MAIN
|
|
#"file:///f:/master/IMAGENES/LOGO.JPG"
|
|
#"file:///C://Users//jsoto//Documents//PROYECTOS//BDL320//MARMOTECH//PROYECTO//bin//IMAGENES//LOGO_DCM.PNG"
|
|
|
|
FUNCTION enviaemailMain()
|
|
|
|
DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
|
|
r_filename STRING, -- filename of Report Design Document including .4rp extension
|
|
r_output STRING, -- output format option
|
|
preview INTEGER, -- TRUE/FALSE, to set preview option
|
|
retorne BOOLEAN,
|
|
xemail,xemailvend,xtelefono VARCHAR(100),
|
|
nombreVendedor VARCHAR(200),
|
|
url,strusername,xsmtphost,strpassword,strport STRING
|
|
|
|
|
|
|
|
IF NOT validate_param_smpt_auth() THEN
|
|
CALL FGL_WINMESSAGE("INFO","NO EXISTE CONEXION","INFO")
|
|
END IF
|
|
|
|
# CALL create_cxion_session() RETURNING sesion,password,s_protocol
|
|
|
|
LET cuenta_Envio = 0
|
|
|
|
|
|
SELECT a.from_address,a.puerto,a.nombre_servidor,a.clave
|
|
INTO strusername,strport,xsmtphost,strpassword
|
|
FROM tbperfil_mail a WHERE cod_perfil =3
|
|
|
|
# LET subject = datos_recibo.nom1_emp CLIPPED," ",datos_recibo.apell1_emp CLIPPED,"(",datos_recibo.num_emp USING "<<<<",")"
|
|
LET subject = "=?UTF-8?B?wqFIb2xhIQ==?=Aprovecha +300 revestimientos para ti!"#"¡Aprovecha +300 revestimientos para ti!"
|
|
#"<div><img src='https://ws.marmotech.com.do/imagenes/principal/emailmarketing.png' width='600' height='350' loading='eager'></div>",
|
|
|
|
{
|
|
ESTOS CODIGOS ES PARA ENVIAR UNA IMAGEN CON HIPER VINCULO
|
|
"<p><a href='https://encuestaemp.vercel.app/'>",
|
|
"<img border='0' alt='Encuesta' src='https://ws.marmotech.com.do/imagenes/principal/clientes/OfertaNPFeed.png' width='600' height='400'>",
|
|
"</a></p>"
|
|
}
|
|
DECLARE busca_email CURSOR FOR
|
|
|
|
SELECT DISTINCT b.email,a.tipo_cliente,a.sec_cliente,d.email,
|
|
RTRIM(f.nom1_emp)||' '||ISNULL(RTRIM(f.apell1_emp),' '),
|
|
d.celular
|
|
INTO xemail,xtipo,xsec,xemailvend,nombreVendedor,
|
|
xtelefono
|
|
FROM vetb00004 a
|
|
INNER JOIN emailmarketing b ON b.tipo_cliente = a.tipo_cliente AND
|
|
b.sec_cliente = a.sec_cliente
|
|
AND b.estado IS NULL
|
|
INNER JOIN vetb00028 c ON c.tipo_cliente = a.tipo_cliente AND
|
|
c.sec_cliente = a.sec_cliente
|
|
INNER JOIN adtb00003 f ON f.num_emp = c.sec_vend AND f.status_t IS null
|
|
LEFT OUTER JOIN seg0000 d ON d.sec_Vend = c.sec_Vend
|
|
WHERE a.status_T IS NULL AND
|
|
a.tipo_cliente IN (15,16,19) AND (a.patente IS NOT NULL and a.patente like '%@%')
|
|
# AND a.tipo_cliente = 15 AND a.sec_cliente = 1991
|
|
|
|
FOREACH busca_email
|
|
|
|
# LET xemail = 'jsoto@marmotech.com.do'
|
|
LET cuerpo_correo = "<!DOCTYPE html>
|
|
<html lang='es'>
|
|
<head>
|
|
<meta charset='UTF-8'>
|
|
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
|
|
<title>Información y Imagen</title>
|
|
</head>
|
|
<body>
|
|
<!-- Texto de saludo e información -->
|
|
<p>¡Hola!</p>
|
|
<p>Para más información puedes contactar a tu vendedor: <strong>",nombreVendedor CLIPPED,' ',xtelefono CLIPPED,"</strong></p>
|
|
|
|
<!-- Imagen que se ajusta bien -->
|
|
<img alt='Oferta' src='https://ws.marmotech.com.do/imagenes/principal/clientes/otraOfertas.png' style='max-width: 100%; height: auto;'>
|
|
</body>
|
|
</html>"
|
|
|
|
{
|
|
LET cuerpo_correo = "<p><h3>¡Hola!</p></h3>
|
|
<p><h3>Para más información puedes contactar a tu vendedor: ",nombreVendedor CLIPPED,"</h3></p>"
|
|
LET cuerpo_correo =cuerpo_correo CLIPPED, "<img border='0' alt='Oferta' src='https://ws.marmotech.com.do/imagenes/principal/clientes/otraOfertas.png' style='max-width: 100%; height: auto;'>"
|
|
}
|
|
DISPLAY "data email ",xemail," ",subject," ",cuerpo_correo," ",sesion," ",password," ",s_protocol
|
|
LET estado_envio = 'INTENTO ENVIO'
|
|
|
|
TRY
|
|
|
|
IF xemailvend IS NOT NULL THEN
|
|
LET xemail = xemail CLIPPED,",",xemailvend CLIPPED
|
|
END IF
|
|
CALL enviaemail(xemail,subject,cuerpo_correo,NULL,strusername,xsmtphost,strport,strpassword) #RETURNING retorne
|
|
# EXIT FOREACH
|
|
|
|
SELECT DISTINCT a.tipo_cliente FROM emailmarketing a
|
|
WHERE a.tipo_cliente =xtipo AND a.sec_cliente = xsec
|
|
IF STATUS <> NOTFOUND THEN
|
|
UPDATE emailmarketing SET fecha_Envio = getdate(),estado = 'INTENTO ENVIO'
|
|
WHERE tipo_cliente = xtipo AND sec_cliente = xsec
|
|
ELSE
|
|
INSERT INTO emailmarketing(tipo_cliente,sec_cliente,estado,fecha_Envio,email)
|
|
VALUES (xtipo,xsec,estado_envio,getdate(),xemail)
|
|
END IF
|
|
|
|
LET cuenta_envio = cuenta_Envio + 1
|
|
IF cuenta_Envio > 490 THEN
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
CATCH
|
|
LET estado_Envio = 'ERROR ENVIO'
|
|
UPDATE emailmarketing SET fecha_Envio = getdate(),estado = 'ERROR ENVIO' WHERE email = xemail
|
|
END TRY
|
|
|
|
END FOREACH
|
|
|
|
|
|
|
|
END FUNCTION
|
|
FUNCTION elimina()
|
|
DELETE FROM emailmarketing WHERE email = xemail
|
|
END FUNCTION
|