607
Puedes usar el Enviar mensaje de correo cmdlet para enviar notificaciones por correo electrónico a través de un servidor SMTP. El uso más común de Send-MailMessage en los scripts de PowerShell es cuando necesita enviar notificaciones a su buzón de correo o al de un usuario. En este artículo, veremos algunos ejemplos de cómo usar el cmdlet Send-MailMessage para enviar correos electrónicos.
Si desea enviar una carta, debe especificar valores en los siguientes parámetros:
- De: dirección SMTP del remitente
- Para: correo electrónico del destinatario
- Asunto — asunto del correo electrónico
- SmtpServer: nombre de host o dirección IP del servidor SMTP
Entonces, el comando mínimo de PowerShell que necesita para enviar un mensaje de correo electrónico es el siguiente:
Send-MailMessage -From "admin@theitbros.com" -To "info@theitbros.com" -Subject "Test PowerShell Message" -Body "Message body" -SmtpServer smtp.theitbros.com
Este comando le permite enviar correos electrónicos solo a través de un servidor SMTP con autenticación anónima (retransmisión interna o abierta).
Nota. Ejemplo de configuración de retransmisión SMTP de AWS SES.
Si su servidor requiere autenticación básica, puede especificar las credenciales. Agregue la siguiente opción al comando anterior:
-Credential theitbros\admin1
Si necesita enviar un correo electrónico a varios destinatarios, puede:
- Introdúzcalos separados por una coma de la siguiente manera:
-To 'user1@theitbros.com', 'user2@theitbros.com'
- Puede enviar una copia del mensaje utilizando la opción:
-Сс 'user3@theitbros.com'
- Envíe una copia al carbón oculta:
-Bcc 'user4@theitbros.com'
Los tres tipos de destinatarios se pueden especificar en un solo comando Send-MailMessage.
Puede especificar una lista de archivos para adjuntar al correo electrónico:
-Attachments 'C:\Reports\2023april.log','C:\Report\2023april_users.csv'
Puede adjuntar todos los archivos en el directorio especificado a la carta en una sola operación:
Get-ChildItem -Path 'C:\reports' | Send-MailMessage …
Nota. La declaración que contiene los comandos Get-ChildItem y For-Each le permite recorrer todos los archivos en la carpeta especificada.
En el mundo real, la mayoría de los servidores SMTP requieren que use SSL para conectarse, por lo que deberá especificar parámetros adicionales -Usar SSL y -Puerto 587.
En el siguiente ejemplo, le mostraremos cómo usar PowerShell para enviar correos electrónicos a través del servidor SMTP de Gmail.
Primero, debe configurar su cuenta de Google:
- Inicie sesión en su cuenta de Google;
- Vaya a https://myaccount.google.com/security y habilite la «Verificación en dos pasos»;
- A continuación, desplácese hacia abajo hasta la Contraseñas de aplicaciones sección;
- Cree una nueva contraseña: escriba su nombre (PowerShell_SMTP) y haga clic en Generar;
- Copie su contraseña de aplicación de 16 caracteres. Esta es la contraseña que usaremos para autenticarnos en Gmail SMTP desde PowerShell.
Pista. Anteriormente, le mostramos cómo conectar el buzón de Gmail en Outlook con el uso de una contraseña de aplicación.
Ahora puede enviar un correo electrónico a través del SMTP de Gmail:
$Sender="itbros@gmail.com" $AppPassword = "gmail_app_password" | ConvertTo-SecureString -AsPlainText –Force $Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Sender, $AppPassword Send-MailMessage -Credential $credential -UseSSL -SmtpServer 'smtp.gmail.com' -Port 587 -From $Sender -To 'info@theitbros.com' -Subject 'Send Messahe via Gmail SMTP' -Body "This message has been sent from the host $($env:computername)"
Abra el buzón del destinatario y verifique si el correo electrónico se entregó correctamente.