Microsoft Azure no tiene un servicio de entrega de correo electrónico. Ya sea que esté probando aplicaciones o desarrollando scripts en Azure para enviar correos electrónicos, sepa que no hay un servicio de correo nativo disponible para usted.
La conexión SMTP saliente a través del puerto 25 está completamente bloqueada en Azure también. Si es un cliente empresarial, puede solicitar desbloquear el puerto 25 para su inquilino de Azure. De lo contrario, ¿cómo más puede enviar correos electrónicos desde Azure?
Normalmente hay dos formas de permitir el envío de correos electrónicos desde Azure: utilizando un servidor SMTP y solicitudes API REST. La mayoría de los servicios de entrega de correo electrónico ofrecen ambos métodos de envío de correos electrónicos. En este artículo, aprenderá cómo enviar correos electrónicos desde Azure al resto del mundo.
Prerrequisitos
Este artículo es una guía práctica y si planea seguir los ejemplos a medida que avanzan, hay algunos requisitos que debe cumplir.
- Una suscripción de Azure. Puede registrarse para obtener una suscripción gratuita de Azure si aún no tiene una.
- Una Máquina Virtual de Azure (VM). Consulta Cómo crear una máquina virtual de Windows en el portal de Azure para aprender cómo crear una nueva VM si aún no tienes una.
- Windows PowerShell 5.1 o PowerShell 7.1.
- A valid sender email address. Using a free email address domain, such as gmail.com, is not recommended. As much as possible, use a sender email address that uses a domain that you own.
Conocer qué servicios de correo electrónico usar con Azure para enviar correos electrónicos
Hay varios servicios de correo electrónico en la nube disponibles para usar. Algunos de los nombres prominentes son SendGrid, MailJet, y MailGun. Cualquiera sea el servicio de correo electrónico que elijas, usarlos para enviar correos electrónicos desde Azure es similar; dirección del servidor y puerto para SMTP y dirección del punto de conexión de la API para REST.
SendGrid es un ejemplo de un servicio de correo electrónico de terceros utilizado en este artículo. Servicios de correo electrónico adicionales utilizados como ejemplos son Relé SMTP de Office 365 y Microsoft Graph API.
Relacionado: Cómo elegir un servicio de correo electrónico de Azure para 2021
Uso de SendGrid
SendGrid es probablemente la opción de servicio de correo electrónico más popular para enviar correos electrónicos desde Azure. Azure y SendGrid son tan populares porque solían ofrecer un plan gratuito con un límite de 25,000 correos electrónicos por mes para los clientes de Azure.
Aunque el plan gratuito ya no se ofrece en el portal de Azure, como lo confirmó Microsoft, es posible registrarse para obtener una suscripción gratuita con un límite de 100 correos electrónicos por día. Entonces, tendrás acceso al servicio de retransmisión SMTP de SendGrid o a la API de correo electrónico para enviar correos electrónicos desde una aplicación o VM de Azure.
Creación de una cuenta de SendGrid
Para utilizar los servicios de SendGrid, primero debes tener una cuenta de SendGrid. Ve a la página de Registro, y deberías ver el formulario como se muestra a continuación. Ingresa tu dirección de correo electrónico y la contraseña que elijas. Luego, acepta los términos y haz clic en el botón Crear cuenta.

En la siguiente página, debes ingresar tu nombre e información de la empresa. También necesitas seleccionar las opciones apropiadas, como tu rol, los correos electrónicos a enviar por mes y el número de empleados. Luego, haz clic en Empezar.

Cuando inicies sesión por primera vez en SendGrid, es posible que obtengas un error que diga: “No estás autorizado para acceder a SendGrid; por favor, contacta al Soporte”. Cuando esto suceda, abre un ticket con el soporte de SendGrid. Es posible que necesiten hacer algunas preguntas de verificación antes de desbloquear tu acceso.
Se te pedirá que habilites la autenticación de dos factores durante tu primer inicio de sesión. Asegúrate de seguir las instrucciones con precisión.
Creación de una Identidad de Remitente de SendGrid
Después de crear la cuenta de SendGrid, el siguiente paso es autorizar la identidad del remitente. Hay dos opciones; autenticar un único remitente (por ejemplo, [email protected]) o autenticar un dominio entero (por ejemplo, dominio.com).
En este ejemplo, crearás una identidad de remitente único que servirá como tu dirección de remitente. Solo la dirección de remitente verificada podrá enviar mensajes a través del servicio de SendGrid. Sigue las instrucciones a continuación para crear la identidad de remitente único.
- En la página de Bienvenida, haz clic en el botón Crear un Remitente Único.

2. Luego, en el menú desplegable Crear un Remitente, proporciona toda la información requerida. Los campos obligatorios están marcados con un asterisco rojo junto a ellos para una referencia más fácil. Después de ingresar los detalles, haz clic en Crear.

Verás la nueva dirección del remitente enlistada bajo la página de Verificación de Remitente Único. Como se puede observar en el ejemplo a continuación, la dirección aún no está verificada, como indica una X roja en la columna VERIFICADO.

3. Para verificar al remitente, localiza el correo enviado a la dirección del remitente, similar a la captura de pantalla a continuación. Luego, haz clic en el botón Verificar Remitente Único.

La dirección del remitente quedará verificada. Deberías ver una página similar, como se muestra a continuación, confirmando que la verificación del remitente está completa.

Creación de una Clave de API de SendGrid
Después de crear la dirección de remitente único, la interfaz para crear claves de API se vuelve disponible. Piensa en la clave de API de SendGrid como la contraseña. Sin ella, tu código no puede autenticarse con el servicio de retransmisión SMTP de SendGrid. Sigue los pasos a continuación para crear una nueva clave de API.
- En el menú del lado izquierdo, haz clic en Configuración > Claves de API. Luego, haz clic en el botón Crear Clave de API en la esquina superior derecha de la página.

2. Aparece el desplegable Crear Clave de API. Ingresa el nombre de la clave de API que estás creando. Usa un nombre que tenga sentido, como “Clave de API de Prueba de Azure“. Luego, por simplicidad, selecciona Acceso Completo como permiso. Finalmente, haz clic en el botón Crear y Ver.

3. A continuación, se muestra la nueva Clave de API. Ahora, cópiala y guárdala, ya que no se mostrará nuevamente. Después de copiar la clave, haz clic en Hecho.

Envío de un Correo Electrónico desde Azure usando el Relevo SMTP de SendGrid
Ahora tienes los componentes necesarios (cuenta, remitente y clave) para usar SendGrid y enviar correos electrónicos desde Azure. Es hora de probar si el servicio de retransmisión SMTP de SendGrid funciona. En esta sección, vas a utilizar PowerShell para enviar correos electrónicos desde una VM de Azure.
Antes de ejecutar cualquier código, debes conocer estos requisitos.
- La dirección del servidor SMTP de SendGrid es smtp.sendgrid.net.
- El nombre de usuario utilizado para la autenticación SMTP siempre es apikey.
- La contraseña a utilizar es el valor de la clave API que creaste en SendGrid.
- No uses el puerto 25. En su lugar, utiliza el puerto 587.
- Solo la dirección de remitente verificada en SendGrid es válida para usar como remitente de tus correos electrónicos. En este ejemplo, el remitente autorizado es [email protected].
El script a continuación enviará un correo electrónico a través de la retransmisión SMTP de SendGrid. Copia el código a continuación y cambia los valores de $sendGridApiKey
, From
, To
, y Body
. Luego, ejecuta el código en tu sesión de PowerShell. Consulta los comentarios para entender qué hace cada línea de código.
La demostración a continuación muestra cómo se ve en tiempo real ejecutar el código anterior en PowerShell.

Para confirmar la entrega del correo electrónico, verifica el buzón del destinatario para encontrar el mensaje de prueba que enviaste. El resultado sería similar al que se muestra a continuación. Como puedes ver, el mensaje provino de la dirección del remitente a través de sendgrid.net.

Relacionado: Send-MailMessage: La forma de enviar correos electrónicos en PowerShell
Enviar un correo electrónico desde Azure usando la API de SendGrid
Otra forma de utilizar SendGrid con Azure para enviar correos electrónicos es mediante la API web V3 de SendGrid. En lugar de comunicarse con SendGrid a través de SMTP, el uso de la API implica la comunicación mediante HTTP. La solicitud HTTP se envía a la URL del punto final de la API de SendGrid.
El script de ejemplo de PowerShell a continuación utiliza el cmdlet Invoke-RestMethod
para enviar la solicitud de correo electrónico desde Azure a SendGrid. Copia el código y cambia los valores de las variables $sendGridApiKey
, $fromAddress
, $toAddress
, $mailSubject
y $mailMessage
.
Una vez que hayas terminado de actualizar las variables, ejecuta el código en PowerShell.
Después de ejecutar el código de PowerShell anterior, verifica el buzón del destinatario y confirma que recibió el mensaje de prueba. El ejemplo a continuación muestra un mensaje de prueba entregado correctamente desde Azure a través de la API de SendGrid.

Si deseas obtener más información sobre la API web de SendGrid, visita la página V3 Mail Send API.
Usando la autenticación SMTP de Office 365
Otra opción para enviar correos electrónicos de Azure es utilizar el retransmisor SMTP de Office 365. Esto es si tu organización ya tiene una suscripción a Exchange Online. Al igual que al utilizar SendGrid como un host inteligente SMTP, el retransmisor SMTP de Office 365 requiere autenticación y el uso del puerto 587 únicamente.
Antes de utilizar el retransmisor SMTP de Office 365, debes conocer las siguientes condiciones para que funcione.
- La dirección del remitente debe ser un objeto de destinatario de Exchange Online válido, como un buzón o un usuario de correo. Pero, si se van a almacenar recibos de no entrega (NDR), utiliza un buzón en su lugar.
- El usuario de autenticación debe tener una licencia válida de Exchange Online. Solo los usuarios con licencia de Exchange Online tienen permitido utilizar el retransmisor SMTP de Office 365.
- Suponga que el usuario de autenticación es diferente del remitente. En ese caso, el usuario debe ser asignado el permiso de Enviar como a la cuenta del remitente.
- El método de autenticación utilizado es básico (heredado). Esto significa que si la autenticación básica de SMTP está desactivada en su organización o cuando Microsoft finalmente elimine la autenticación básica, la autenticación SMTP dejará de funcionar.
- La dirección del servidor de retransmisión SMTP es smtp.office365.com, y el número de puerto es 587.
Relacionado: Cómo enviar correo electrónico con Office 365 Direct Send y PowerShell
Creando una dirección de remitente de Office 365
En este ejemplo, el remitente y el usuario de autenticación son distintos. Asegúrese de conectarse a PowerShell de Exchange Online primero. Una vez conectado, siga los pasos a continuación.
Cree un buzón compartido utilizando el siguiente comando. Cambie los valores de -Name
y -PrimarySMTPAddress
por sus valores correctos.
El buzón compartido debería ser creado y devolver un resultado similar al siguiente.

A continuación, asigna el permiso Enviar como al usuario de autenticación. En el ejemplo a continuación, se le asigna al usuario el permiso Enviar como al buzón compartido.
Una vez ejecutado el comando anterior, deberías obtener un resultado similar al siguiente.

Enviando un correo electrónico desde Azure usando el Relevo SMTP de Office 365
Después de crear la dirección del remitente y asignar el permiso de Enviar como, el siguiente paso es probar la entrega del correo electrónico usando PowerShell y el relevo SMTP de Office 365.
El código a continuación se autentica usando [email protected]. La dirección [email protected] aparece como el remitente. Asegúrate de asignar tus valores correctos antes de ejecutar el código.
Usar credenciales en scripts que están en texto plano no es recomendado. Los scripts de producción deben usar cifrado de credenciales o gestión de secretos para asegurar nombres de usuario y contraseñas.
Ahora es el momento de revisar el buzón del destinatario. Confirma que el mensaje de prueba fue recibido.

Usando la API de Microsoft Graph para enviar correo electrónico de Azure
En lugar de utilizar el retransmisor SMTP de Office 365, la forma más segura y recomendada es utilizar la API de Microsoft Graph. Con la API de Microsoft Graph, puedes enviar correos electrónicos desde cualquier buzón en tu organización mediante llamadas a la API REST.
Para utilizar la API de Microsoft Graph para enviar correos electrónicos, se requiere una aplicación registrada en Azure AD. La aplicación registrada debe tener asignado el permiso de API Mail.Send. Las siguientes secciones te mostrarán cómo configurar la API de Microsoft Graph y cómo usarla para enviar correos electrónicos.
Relacionado: Uso de la API de Microsoft Graph con PowerShell
Registro de una nueva aplicación en Azure Active Directory
En esta sección, registrarás una nueva aplicación web en el directorio activo de Azure. La nueva aplicación actúa como la identidad de autenticación para Microsoft Graph. Inicia sesión en el Portal de Azure si aún no lo has hecho.
- Ve a Directorio activo de Azure —> Registro de aplicaciones. Luego, haz clic en el botón Nuevo registro.

2. En la página Registrar una aplicación, ingresa el nombre de la aplicación.
3. Bajo la categoría de Tipos de cuenta admitidos, elige Cuentas solo en este directorio organizativo. Ingresa HTTP://localhost como URI de redirección. Finalmente, haz clic en el botón Registrar.

4. Espera a que se complete el registro. El proceso solo toma unos segundos. No olvides tomar nota del ID de la aplicación (cliente) resultante y los valores de ID de directorio (inquilino). Los necesitarás más adelante.

Creación de una clave secreta del cliente
Considera el ID de la aplicación que creaste en la sección anterior como el nombre de usuario. Y ese ID de aplicación necesita una contraseña, que es la clave secreta.
Para agregar una nueva clave secreta de aplicación, sigue los pasos a continuación.
- Ve a Certificados y secretos, luego haz clic en Nueva clave secreta del cliente.
- Ingresa la descripción para la clave secreta del cliente, como key1.
- Selecciona cuándo expira la clave secreta y haz clic en Agregar. En el ejemplo a continuación, la clave secreta expira en 1 año.

Verás la nueva clave en la sección de Secretos del cliente. Este es el único momento en el que verás el valor de la clave, así que guarda una copia.

Asignación de permisos de API y otorgar el consentimiento del administrador
Ahora que has creado el ID de la aplicación y la clave secreta, lo que queda es asignar los permisos requeridos de la API de Microsoft Graph. Sin asignar permisos, la aplicación puede autenticarse pero no tendrá autoridad para realizar ninguna acción, como enviar correos electrónicos.
Para comenzar a asignar permisos, sigue los pasos a continuación.
- Haz clic en Permisos de API en el menú de la izquierda.
2. Luego, en la página de Permisos configurados, haz clic en el botón Agregar un permiso.

3. En el desplegable de Solicitar permisos de API, haz clic para seleccionar API de Microsoft Graph.

4. Cuando se te pida elegir el tipo de permiso requerido por la aplicación, haz clic en Permisos de aplicación.
5. En el cuadro de búsqueda, escribe Mail.Send para buscarlo. En el resultado, haz clic para marcar el permiso Mail.Send. Por último, haz clic en Agregar permisos.

6. Notarás que el estado del permiso es “No concedido para <nombre de la organización>.” En este punto, tú o un administrador global deben otorgar primero el consentimiento para la aplicación. Para otorgar el permiso, haz clic en el botón Conceder consentimiento de administrador para <organización>.

El estado del permiso de la API luego cambia a “Concedido para <nombre de la organización>“.

Obtención de un Token de Acceso
Las solicitudes enviadas a la API de Microsoft Graph requieren un token de acceso. En este punto, ya tienes tu ID de aplicación, clave secreta e ID de inquilino. Esos tres elementos de información son lo que se necesita para obtener un token de acceso.
El script de PowerShell a continuación envía la solicitud de token de acceso al punto final de la API de Microsoft Graph. Debes actualizar las variables $client_id
, $client_secret
y $tenant_id
con tus valores correctos primero. Luego, copia y pega el código en PowerShell para solicitar el token de acceso.
La demostración a continuación muestra el script de PowerShell anterior en acción. Observe que el token de acceso solicitado se almacena en la variable $token
.

Los tokens de acceso son válidos por solo una (1) hora a partir del momento en que se adquirieron. Deberá solicitar otro token de acceso después de que el token anterior haya expirado.
Enviando un correo electrónico desde Azure usando Microsoft Graph API
Ahora está listo para usar Microsoft Graph API con Azure para
# Proporcione la dirección de correo electrónico del remitente y del destinatario
$fromAddress = 'SENDER ADDRESS HERE'
$toAddress = 'RECIPIENT ADDRESS HERE'
# Especifique el asunto del correo electrónico y el mensaje
$mailSubject = 'This is a test message from Azure via Microsoft Graph API'
$mailMessage = 'This is a test message from Azure via Microsoft Graph API'
# NO CAMBIE NADA DEBAJO DE ESTA LÍNEA
# Construya la solicitud de la API de Microsoft Graph
$params = @{
"URI" = "https://graph.microsoft.com/v1.0/users/$fromAddress/sendMail"
"Headers" = @{
"Authorization" = ("Bearer {0}" -F $token)
}
"Method" = "POST"
"ContentType" = 'application/json'
"Body" = (@{
"message" = @{
"subject" = $mailSubject
"body" = @{
"contentType" = 'Text'
"content" = $mailMessage
}
"toRecipients" = @(
@{
"emailAddress" = @{
"address" = $toAddress
}
}
)
}
}) | ConvertTo-JSON -Depth 10
}
# Envíe el mensaje
Invoke-RestMethod @params -Verbose