lunes, 27 de diciembre de 2021

Enviar un correo sin outlook con macros excel


Hola amigos, nuevamente aquí con ustedes compartiendo un código mas.

En esta ocasión les comparto como enviar un correo desde un UserFom con macros Excel sin necesidad de depender de otra aplicación como Outlook.

Para ello debemos considerar lo siguiente:

  1. Garantizar que nuestro proveedor de correo tenga habilitado el permiso de acceso para aplicaciones no seguras ya que lo contrario no se podrán enviar mensajes.
  2. Contar con un servidor de correos como: gmail, hotmail, outlook e.t.c.
  3. Puerto.
  4. Seguridad SSL: SI (True), o NO (False)
  5. Un correo.
  6. Contraseña de acceso al correo.
En el ejemplo de práctica les mostraré como funciona con el proveedor de correos de gmail ya que en lo personal me ha funcionado de maravilla.

  • Realizamos un formulario como se muestra en la imagen.

Userform para envío de correo
  • Acceder el menú herramientas, referencias.
Referencia VBA Excel
  • Agregar la librería Microsoft CDO for Windows 2000 Library. Clic en el botón aceptar.
Librería Microsoft CDO for Windows 2000

  • Escribimos el siguiente código en el formulario.
Private Sub cmdprobar_Click()
Dim MiCorreo As CDO.Message
Set MiCorreo = New CDO.Message
On Error GoTo Error
With MiCorreo.Configuration.Fields
If Me.txtseguridad.Text = "SI" Then
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
End If
If Me.txtseguridad.Text = "NO" Then
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
End If
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'cdoBasic
    'Proveedor de correo
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Me.txtservcorreo.Text
    'Puerto
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Me.txtpuerto.Text
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'cdoSendUsingPort
    'Correo a configurar
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = Me.txtemail.Text
    'Contraseña de acceso
    .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = Me.txtcontrase.Text
    .Update
End With
With MiCorreo
    'Quien envía el correo
    .From = Me.txtemail.Text
    'Aqui va el correo de la persona a la que le vas enviar el correo
    .To = Me.txtemail.Text
    'Con copia para
    .CC = "otrocorreo@outlook.com"
    '.BCC = "otrocorreo@dominio.com"
    'Titulo del mensaje
    .Subject = "Correo de prueba"
    'Cuerpo del mensaje
    .TextBody = "Si visualizas este mensaje la configuración ha sido exitosa"
End With
MiCorreo.Send
MsgBox "El correo ha sido enviado", vbInformation, "Enviado"
Set MiCorreo = Nothing
Error:
If Err.Number <> 0 Then
    MsgBox ("Se ha producido un error" & vbNewLine & "Error número: " & Err.Number & vbNewLine & "Descripción: " & Err.Description)
End If
End Sub

  • Ejecutamos la macro, escribimos el correo y presionamos el botón probar.
Envío de mensaje en Userform

Nos saldrá un mensaje como el que se muestra:

Error con el servidor de correos
  • Ir a la cuenta de correo de google y abrimos el mensaje, damos clic en Comprobar actividad:
Comprobar actividad
  • Damos clic en Si he sido yo.
Confirmamos que Si he sido yo
  • Presionamos en mas información
Mas información
  • Buscamos la opción acceso a aplicaciones poco seguras y habilitamos el permiso.
Habilitar acceso de aplicaciones poco seguras
  • Enviamos el correo nuevamente y nos saldrá el mensaje de enviado.
Probar nuevamente el envío del correo

Mensaje de enviado

Es importante considerar los aspectos de seguridad, que nadie tenga acceso a su cuenta de correo mas que la aplicación y el que usa la aplicación.

Google nos sugiere por seguridad el uso de aplicaciones seguras, por lo que si no contamos con ellas, no compartir contraseñas o referencias de que estamos usando un correo para envío de mensajes y cambiar las contraseñas de manera periódica.



No hay comentarios.:

Publicar un comentario