Permite enviar mensajes por correo electrónico
utilizando el protocolo SMTP (Simple Mail Transfer Protoco), por lo
tanto es necesario contar con un servicio de correo que soporte SMTP.
Los servicios de correo basados en web como Outlook/Live/Hotmail de Microsoft, GMail de Google o Yahoo! cuentan con la capacidad de realizar envios de correo usando SMTP, sin embargo, en el caso de GMail y Yahoo!, es necesario configurar el servicio para que pueda soportar envío de correo por medio de "herramientas externas", esto se puede hacer en las bandejas de entrada de estos servicios desde un navegador web.
HotMail / Live / Outlook no requieren configuración adicional, pero requieren usar seguridad SSL, y esta se define en el último parámetro de la función.
Si cuentas con tu propio dominio (p. ej. miempresa.com, minegocio.mx, otro.com.mx, etc.) contacta con tu administrador del servicio de correo para que te indique los valores para los parámetros de esta función.
El uso de esta función se basa en los servicios CDO (Collaboration Data Objects) de Windows, por lo que no es necesario contar ninguna herramienta adicional, ni instalar algun otro componente, si cuentas con Windows 7 o superior, tienes instalados los servicios de CDO.
Los servicios de correo basados en web como Outlook/Live/Hotmail de Microsoft, GMail de Google o Yahoo! cuentan con la capacidad de realizar envios de correo usando SMTP, sin embargo, en el caso de GMail y Yahoo!, es necesario configurar el servicio para que pueda soportar envío de correo por medio de "herramientas externas", esto se puede hacer en las bandejas de entrada de estos servicios desde un navegador web.
HotMail / Live / Outlook no requieren configuración adicional, pero requieren usar seguridad SSL, y esta se define en el último parámetro de la función.
Si cuentas con tu propio dominio (p. ej. miempresa.com, minegocio.mx, otro.com.mx, etc.) contacta con tu administrador del servicio de correo para que te indique los valores para los parámetros de esta función.
El uso de esta función se basa en los servicios CDO (Collaboration Data Objects) de Windows, por lo que no es necesario contar ninguna herramienta adicional, ni instalar algun otro componente, si cuentas con Windows 7 o superior, tienes instalados los servicios de CDO.
Versión de VirtualXML.DLL que soporta esta función: 1.0.7.9 15 Septiembre 2022
Aplicación: CFDI ver. 3.3 y 4.0
Sintaxis
public static int Utils_SendEmail(
string SmtpServer,
int SmtpPort,
string SmtpUserName,
string SmtpPassword,
string MessageTo,
string MessageFrom,
string MessageSubject,
string MessageBody,
string MessageAttach1,
string MessageAttach2,
string MessageAttach3,
string OutLog
string SSL
)
Parametros
- SmtpServer
- Tipo: System
String
Nombre del servidor SMTP, si tienes una cuenta con dominio propio (p.ej. dominio.com, otrodominio.com.mx, mi_dominio.mx, etc.) consulta a tu administrador de dominio para obtener este dato.
- Para los servicios de correo electrónico gratuitos, estos son los servidores SMTP:
- Hotmail / Outlook / Live: smtp-mail.outlook.com (requiere activar las opciones de correo POP en la configuración Correo / Sincronizar correo electrónico de HotMail / Outlook /Live)
- Yahoo! Mail: smtp.mail.yahoo.com (requiere "registrar" tu aplicación en el correo de Yahoo!, esto se hace desde la página de Yahoo! Mail sección: Configuración / Seguridad de la cuenta / Generar contraseña de aplicaciones, el registro de tu programa te generará una constraseña nueva, distinta a la que usas para entrar a la página de Yahoo! Mail y deberás usar esta nueva contraseña para usar el protocolo SMTP con Yahoo, usando la misma cuenta de correo @yahoo.com que usas en la página web de Yahoo Mail.)
- GMail: smtp.gmail.com (similar a Yahoo, requiere generar una nueva contraseña para tu aplicación, esto lo haces desde la configuración de seguridad de tu cuenta de Google, sección: Seguridad / Contraseña de aplicaciones, podrás usar el servidor SMTP de GMail con tu dirección de correo @gmail.com, pero con la nueva contraseña generada)
- SmtpPort
- Tipo: System
Int32
Número de puerto que usa el servidor SMTP. El puerto estándar del protocolo SMTP es el puerto 25, sin embargo, para evitar el abuso de envío de correos spam, muchos proveedores han cambiado al puerto 587. Los servidores que requieran usar el protocolo de seguridad TLS (Transport Layer Security) deberán usar el puerto 465, la función establece automaticamente el protocolo TLS cuando se usa el puerto 465.
- Para los servicios de correo electrónico gratuitos, estos son los puertos:
- Hotmail / Outlook / Live: 25 587 (usar el
puerto 587 requiere protocolo STARTTLS, de momento no soportado por la
función).
- Yahoo: 25 ó 465
- GMail: 587 ó 465
- SmtpUserName
- Tipo: System
String
Nombre del usuario del servicio SMTP, usualmente es tu misma cuenta de correo, esto aplica también para los servicios de correo electrónico gratuitos.
- SmtpPassword
- Tipo: System
String
Clave de acceso para uso del servicio SMTP, si tienes tu propio dominio, consulta con el administrador del mismo para obtener este valor. - En
el caso de HotMail / Outlook / Live, es la misma contraseña que usas en
la página web del correo, en el caso de Yahoo ! y de GMail, es la
contraseña generada automaticamente al momento de registrar la
aplicación.
- MessageTo
- Tipo: System
String
Dirección de correo electronico del destinatario (usuario@dominio) quien va dirigido el correo.
- MessageFrom
- Tipo: System
String
Direccion de correo del remitente. (usuario@dominio) que envia el correo
- MessageSubject
- Tipo: System
String
Asunto del correo (p. ej. "Se envia comprobante fiscal digital")
- MessageBody
- Tipo: System
String
Cuerpo del mensaje, puede ser texto plano o bien codigo html.
- MessageAttach1, MessageAttach2, MessageAttach3
- Tipo: System
String
Nombre de hasta 3 archivos a ser agregados en el correo, se debe indicar la ruta completa a la ubicación de archivo a enviar en el disco duro local.
- OutLog
- Tipo: System
String
Nombre del archivo de bitácora donde se almacenarán los procesos de envio de correo. Necesario para soporte técnico
- SSL
- Tipo: System
String
Indica que se debe utilizar el protocolo de seguridad SSL para enviar el correo, esto se hace indicando el valor "SSL" en el parámetro. En el caso de HotMail / Outlook / Live, este parámetro es OBLIGATORIO.
Valor retornado:
Tipo: Int32
Retorna un 0 (cero) si el correo se envió con éxito, cualquier otro
valor significa error y deberá utilizar el archivo de bitácora para mas
información sobre el error
Ejemplo
private void EnviaMail()
{
// Ejemplo 1. Enviamos el correo desde un correo con dominio propio
int nMail = Utils_SendEmail("smtp.servidor.com", // Servidor SMTP
587, // Puerto del servidor
"usuario@servidor.com", // usuario del servidor SMTP, no confundir con la direccion del remitente, puede ser distinto
"MiPasswordUltraSecreto", // Password del usuario para utilizar el servicio SMTP
"destinatario@direcciondecorreo.com",// direccion del destinatario de correo
"usuario@servidor.com", // Direccion del remitente de correo
"Se envian archivos CFDI", // Asunto del correo
"Anexo al presente documento encontrará su comprobante fiscal correspondiente a su compra realizada con nosotros",// Cuerpo del mensaje
"C:\facturas\clientes\archivo.xml" // Archivo anexo 1
"C:\facturas\clientes\archivo.pdf", // Archivo anexo 2
"" // Archivo anexo 3
"C:\bitacora\BitacoraCorreo.log", // archivo de bitacora
"" ); // NO usar SSL
// Revisamos Resultados
if ( nMail = 0 )
{
// Correo enviado correctamente
MsgBox("Correo enviado con exito")
}
else
{
MsgBox("No fue posible enviar el correo, revise su archivo de bitacora")// Error en el envio de correo
}
// Ejemplo 2. Enviamos el correo desde Hotmail / Outlook / Live
int nMail = Utils_SendEmail("smtp-mail.outlook.com", // Servidor SMTP
25, // Puerto del servidor
"micorreo@hotmail.com", // usuario del servidor SMTP, no confundir con la direccion del remitente, puede ser distinto
"MiPasswordDeHotMail", // Password del usuario para utilizar el servicio SMTP
"destinatario@direcciondecorreo.com", // direccion del destinatario de correo
"micorreo@hotmail.com", // Direccion del remitente de correo
"Se envian archivos CFDI desde Hotmail", // Asunto del correo
"Anexo al presente documento encontrará su comprobante fiscal correspondiente a su compra realizada con nosotros",// Cuerpo del mensaje
"C:\facturas\clientes\archivo.xml" // Archivo anexo 1
"C:\facturas\clientes\archivo.pdf", // Archivo anexo 2
"" // Archivo anexo 3
"C:\bitacora\BitacoraCorreo.log", // archivo de bitacora
"SSL" ); // USAR SSL
// Ejemplo 3. Enviamos el correo desde Yahoo !
int nMail = Utils_SendEmail("smtp.mail.yahoo.com", // Servidor SMTP
465, // Puerto del servidor
"micorreo@yahoo.com", // usuario del servidor SMTP, no confundir con la direccion del remitente, puede ser distinto
"jxxw XXXX XXXX wqie", // Password del usuario para utilizar el servicio SMTP
"destinatario@direcciondecorreo.com", // direccion del destinatario de correo
"micorreo@yahoo.com", // Direccion del remitente de correo
"Se envian archivos CFDI desde Yahoo!",// Asunto del correo
"Anexo al presente documento encontrará su comprobante fiscal correspondiente a su compra realizada con nosotros",// Cuerpo del mensaje
"C:\facturas\clientes\archivo.xml" // Archivo anexo 1
"C:\facturas\clientes\archivo.pdf", // Archivo anexo 2
"" // Archivo anexo 3
"C:\bitacora\BitacoraCorreo.log", // archivo de bitacora
"" ); // NO usar SSL porque el puerto 465 utiliza TLS
// Ejemplo 4. Enviamos el correo desde GMail
int nMail = Utils_SendEmail("smtp.gmail.com", // Servidor SMTP
465, // Puerto del servidor
"micorreo@gmail", // usuario del servidor SMTP, no confundir con la direccion del remitente, puede ser distinto
"maso XXXX XXXX qeci", // Password del usuario para utilizar el servicio SMTP
"destinatario@direcciondecorreo.com", // direccion del destinatario de correo
"micorreo@gmail.com", // Direccion del remitente de correo
"Se envian archivos CFDI desde GMail",// Asunto del correo
"Anexo al presente documento encontrará su comprobante fiscal correspondiente a su compra realizada con nosotros",// Cuerpo del mensaje
"C:\facturas\clientes\archivo.xml" // Archivo anexo 1
"C:\facturas\clientes\archivo.pdf", // Archivo anexo 2
"" // Archivo anexo 3
"C:\bitacora\BitacoraCorreo.log", // archivo de bitacora
"" ); // NO usar SSL porque el puerto 465 utiliza TLS
}
Vease Tambien