Búsqueda de sitios web

Enviar mensaje de correo (Microsoft.PowerShell.Utility)


Send-MailMessage

Módulo:
Microsoft.PowerShell.Utility

Envía un mensaje de correo electrónico.

Sintaxis

Send-MailMessage
    [-Attachments <String[]>]
    [-Bcc <String[]>]
    [[-Body] <String>]
    [-BodyAsHtml]
    [-Encoding <Encoding>]
    [-Cc <String[]>]
    [-DeliveryNotificationOption <DeliveryNotificationOptions>]
    -From <String>
    [[-SmtpServer] <String>]
    [-Priority <MailPriority>]
    [-ReplyTo <String[]>]
    [[-Subject] <String>]
    [-To] <String[]>
    [-Credential <PSCredential>]
    [-UseSsl]
    [-Port <Int32>]
    [<CommonParameters>]

Descripción

El cmdlet Send-MailMessage envía un mensaje de correo electrónico desde PowerShell.

Debe especificar un servidor SMTP (Protocolo simple de transferencia de correo) o el comando Send-MailMessage fallará. Utilice el parámetro SmtpServer o establezca la variable $PSEmailServer en un servidor SMTP válido. El valor asignado a $PSEmailServer es la configuración SMTP predeterminada para PowerShell. Para obtener más información, consulte about_Preference_Variables.

Advertencia

El cmdlet Send-MailMessage está obsoleto. Este cmdlet no garantiza conexiones seguras a servidores SMTP. Si bien no hay un reemplazo inmediato disponible en PowerShell, le recomendamos que no utilice Send-MailMessage. Para obtener más información, consulte la nota de compatibilidad de plataforma DE0005.

Ejemplos

Ejemplo 1: enviar un correo electrónico de una persona a otra

Este ejemplo envía un mensaje de correo electrónico de una persona a otra.

Los parámetros De, Para y Asunto son requeridos por Send-MailMessage. Este ejemplo utiliza la variable $PSEmailServer predeterminada para el servidor SMTP, por lo que el parámetro SmtpServer no es necesario.

$sendMailMessageSplat = @{
    From = 'User01 <user01@fabrikam.com>'
    To = 'User02 <user02@fabrikam.com>'
    Subject = 'Test mail'
}
Send-MailMessage @sendMailMessageSplat

El cmdlet Send-MailMessage utiliza el parámetro From para especificar el remitente del mensaje. El parámetro Para especifica el destinatario del mensaje. El parámetro Asunto utiliza la cadena de texto Correo de prueba como mensaje porque el parámetro opcional Cuerpo no está incluido.

Ejemplo 2: enviar un archivo adjunto

Este ejemplo envía un mensaje de correo electrónico con un archivo adjunto.

$sendMailMessageSplat = @{
    From = 'User01 <user01@fabrikam.com>'
    To = 'User02 <user02@fabrikam.com>', 'User03 <user03@fabrikam.com>'
    Subject = 'Sending the Attachment'
    Body = "Forgot to send the attachment. Sending now."
    Attachments = '.\data.csv'
    Priority = 'High'
    DeliveryNotificationOption = 'OnSuccess', 'OnFailure'
    SmtpServer = 'smtp.fabrikam.com'
}
Send-MailMessage @sendMailMessageSplat

El cmdlet Send-MailMessage utiliza el parámetro From para especificar el remitente del mensaje. El parámetro Para especifica los destinatarios del mensaje. El parámetro Asunto describe el contenido del mensaje. El parámetro Cuerpo es el contenido del mensaje.

El parámetro Attachments especifica el archivo en el directorio actual que está adjunto al mensaje de correo electrónico. El parámetro Prioridad establece el mensaje en prioridad Alta. El parámetro DeliveryNotificationOption especifica dos valores, OnSuccess y OnFailure. El remitente recibirá notificaciones por correo electrónico para confirmar el éxito o el fracaso de la entrega del mensaje. El parámetro SmtpServer establece el servidor SMTP en smtp.fabrikam.com.

Ejemplo 3: enviar un correo electrónico a una lista de correo

Este ejemplo envía un mensaje de correo electrónico a una lista de correo.

$sendMailMessageSplat = @{
    From = 'User01 <user01@fabrikam.com>'
    To = 'ITGroup <itdept@fabrikam.com>'
    Cc = 'User02 <user02@fabrikam.com>'
    Bcc = 'ITMgr <itmgr@fabrikam.com>'
    Subject = "Don't forget today's meeting!"
    Credential = 'domain01\admin01'
    UseSsl = $true
}
Send-MailMessage @sendMailMessageSplat

El cmdlet Send-MailMessage utiliza el parámetro From para especificar el remitente del mensaje. El parámetro Para especifica los destinatarios del mensaje. El parámetro Cc envía una copia del mensaje al destinatario especificado. El parámetro CCO envía una copia oculta del mensaje. Una copia oculta es una dirección de correo electrónico que está oculta a los demás destinatarios. El parámetro Asunto es el mensaje porque el parámetro Cuerpo opcional no está incluido.

El parámetro Credential especifica que las credenciales de un administrador de dominio se utilizan para enviar el mensaje. El parámetro UseSsl especifica que Secure Socket Layer (SSL) crea una conexión segura.

Parámetros

-Attachments

Especifica la ruta y los nombres de los archivos que se adjuntarán al mensaje de correo electrónico. Puede utilizar este parámetro o canalizar las rutas y los nombres de archivos a Send-MailMessage.

Tipo :

String[]

Alias:

PsPath

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-Bcc

Especifica las direcciones de correo electrónico que reciben una copia del correo pero que no figuran como destinatarios del mensaje. Introduzca los nombres (opcional) y la dirección de correo electrónico, como Nombre .

Tipo :

String[]

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-Body

Especifica el contenido del mensaje de correo electrónico.

Tipo :

String

Posición:

2

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-BodyAsHtml

Especifica que el valor del parámetro Cuerpo contiene HTML.

Tipo :

SwitchParameter

Alias:

BAH

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-Cc

Especifica las direcciones de correo electrónico a las que se envía una copia carbón (CC) del mensaje de correo electrónico. Introduzca los nombres (opcional) y la dirección de correo electrónico, como Nombre .

Tipo :

String[]

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-Credential

Especifica una cuenta de usuario que tiene permiso para realizar esta acción. El valor predeterminado es el usuario actual.

Escriba un nombre de usuario, como Usuario01 o Dominio01\Usuario01. O bien, introduzca un objeto PSCredential, como uno del cmdlet Get-Credential.

Las credenciales se almacenan en un objeto PSCredential y la contraseña se almacena como SecureString.

Nota

Para obtener más información sobre la protección de datos de SecureString, consulte ¿Qué tan seguro es SecureString?.

Tipo :

PSCredencial

Posición:

Nombrado

Valor predeterminado:

Usuario actual

Requerido:

False

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-DeliveryNotificationOption

Especifica las opciones de notificación de entrega para el mensaje de correo electrónico. Puede especificar varios valores. Ninguno es el valor predeterminado. El alias de este parámetro es DNO.

Las notificaciones de entrega se envían a la dirección en el parámetro De.

Los valores aceptables para este parámetro son los siguientes:

  • Ninguno: Sin notificación.
  • OnSuccess: Notifica si la entrega es exitosa.
  • OnFailure: Notificar si la entrega no se realizó correctamente.
  • Retraso: Notifica si la entrega se retrasa.
  • Nunca: Nunca notificar.

Estos valores se definen como una enumeración basada en indicadores. Puede combinar varios valores para establecer varios indicadores utilizando este parámetro. Los valores se pueden pasar al parámetro DeliveryNotification como una matriz de valores o como una cadena de esos valores separada por comas. El cmdlet combinará los valores mediante una operación binaria O. Pasar valores como una matriz es la opción más simple y también le permite usar la función de tabulación en los valores.

Tipo :

Opciones de notificación de entrega

Alias:

DNO

Valores aceptados:

Ninguno, OnSuccess, OnFailure, Retraso, Nunca

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-Encoding

Especifica el tipo de codificación para el archivo de destino. El valor predeterminado es utf8NoBOM.

Los valores aceptables para este parámetro son los siguientes:

  • ascii: utiliza la codificación para el juego de caracteres ASCII (7 bits).
  • ansi: utiliza la codificación para la página de códigos ANSI de la cultura actual. Esta opción se agregó en PowerShell 7.4.
  • bigendianunicode: codifica en formato UTF-16 utilizando el orden de bytes big-endian.
  • bigendianutf32: codifica en formato UTF-32 utilizando el orden de bytes big-endian.
  • oem: utiliza la codificación predeterminada para MS-DOS y programas de consola.
  • unicode: codifica en formato UTF-16 utilizando el orden de bytes little-endian.
  • utf7: codifica en formato UTF-7.
  • utf8: codifica en formato UTF-8.
  • utf8BOM: codifica en formato UTF-8 con marca de orden de bytes (BOM)
  • utf8NoBOM: codifica en formato UTF-8 sin marca de orden de bytes (BOM)
  • utf32: codifica en formato UTF-32.

A partir de PowerShell 6.2, el parámetro Encoding también permite ID numéricos de páginas de códigos registradas (como -Encoding 1251) o nombres de cadena de páginas de códigos registradas (como -Encoding "windows-1251"). Para obtener más información, consulte la documentación de .NET para Encoding.CodePage.

A partir de PowerShell 7.4, puede usar el valor Ansi para el parámetro Encoding para pasar el ID numérico de la página de códigos ANSI de la cultura actual sin tener que especificarlo manualmente.

Nota

Ya no se recomienda el uso de UTF-7*. A partir de PowerShell 7.1, se escribe una advertencia si especifica utf7 para el parámetro Encoding.

Tipo :

Codificación

Alias:

BE

Valores aceptados:

ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32

Posición:

Nombrado

Valor predeterminado:

ASCII

Requerido:

False

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-From

El parámetro De es obligatorio. Este parámetro especifica la dirección de correo electrónico del remitente. Introduzca un nombre (opcional) y una dirección de correo electrónico, como Nombre .

Tipo :

String

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

True

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-Port

Especifica un puerto alternativo en el servidor SMTP. El valor predeterminado es 25, que es el puerto SMTP predeterminado.

Tipo :

Int32

Posición:

Nombrado

Valor predeterminado:

25

Requerido:

False

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-Priority

Especifica la prioridad del mensaje de correo electrónico. Normal es el valor predeterminado. Los valores aceptables para este parámetro son Normal, Alto y Bajo.

Tipo :

MailPriority

Valores aceptados:

Normal, alta, baja

Posición:

Nombrado

Valor predeterminado:

Normal

Requerido:

False

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-ReplyTo

Especifica direcciones de correo electrónico adicionales (además de la dirección De) que se utilizarán para responder a este mensaje. Introduzca los nombres (opcional) y la dirección de correo electrónico, como Nombre .

Este parámetro se introdujo en PowerShell 6.2.

Tipo :

String[]

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-SmtpServer

Especifica el nombre del servidor SMTP que envía el mensaje de correo electrónico.

El valor predeterminado es el valor de la variable de preferencia $PSEmailServer. Si la variable de preferencia no está configurada y este parámetro no se utiliza, el comando Send-MailMessage falla.

Tipo :

String

Alias:

ComputerName

Posición:

3

Valor predeterminado:

$PSEservidor de correo electrónico

Requerido:

False

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-Subject

El parámetro Asunto no es obligatorio. Este parámetro especifica el asunto del mensaje de correo electrónico.

Tipo :

String

Alias:

sub

Posición:

1

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-To

El parámetro Para es obligatorio. Este parámetro especifica la dirección de correo electrónico del destinatario. Introduzca los nombres (opcional) y la dirección de correo electrónico, como Nombre .

Tipo :

String[]

Posición:

0

Valor predeterminado:

None

Requerido:

True

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-UseSsl

El protocolo Secure Sockets Layer (SSL) se utiliza para establecer una conexión segura con la computadora remota para enviar correo. De forma predeterminada, no se utiliza SSL.

Tipo :

SwitchParameter

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

Entradas

Cadena

Puede canalizar la ruta y los nombres de los archivos adjuntos a este cmdlet.

Salidas

Ninguno

Este cmdlet no devuelve ningún resultado.

Notas

El cmdlet Send-MailMessage está obsoleto. Para obtener más información, consulte la nota de compatibilidad de plataforma DE0005. Este cmdlet no garantiza conexiones seguras a servidores SMTP.

DE0005 sugiere utilizar la biblioteca de terceros, MailKit. Si está utilizando Exchange Online, puede utilizar Send-MgUserMail del SDK de Microsoft Graph PowerShell.

Artículos relacionados