Files
MBS/PROYECTO/nodir/sendemail.4gl
T

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!"#"&iexcl;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>&iexcl;Hola!</p>
<p>Para m&aacute;s informaci&oacute;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