Send-MailMessage

Envía un mensaje de correo electrónico.

Syntax

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>]

Description

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

Debe especificar un servidor simple de protocolo de transferencia de correo (SMTP) o se produce un error en el Send-MailMessage comando. Use el parámetro SmtpServer o establezca la $PSEmailServer variable 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. Aunque no hay ningún reemplazo inmediato disponible en PowerShell, se recomienda no usar Send-MailMessage. Para obtener más información, consulte La nota de compatibilidad de la plataforma DE0005.

Ejemplos

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

En este ejemplo se envía un mensaje de correo electrónico de una persona a otra.

Los parámetros From, To y Subject son necesarios para Send-MailMessage. En este ejemplo se usa la variable predeterminada $PSEmailServer para el servidor SMTP, por lo que no se necesita el parámetro SmtpServer .

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

El Send-MailMessage cmdlet usa el parámetro From para especificar el remitente del mensaje. El parámetro To especifica el destinatario del mensaje. El parámetro Subject usa la cadena de texto Test mail como mensaje porque no se incluye el parámetro Body opcional.

Ejemplo 2: Enviar datos adjuntos

En este ejemplo se envía un mensaje de correo electrónico con datos adjuntos.

$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 Send-MailMessage cmdlet usa el parámetro From para especificar el remitente del mensaje. El parámetro To especifica los destinatarios del mensaje. El parámetro Subject describe el contenido del mensaje. El parámetro Body es el contenido del mensaje.

El parámetro Attachments especifica el archivo del directorio actual adjunto al mensaje de correo electrónico. El parámetro Priority establece el mensaje High como prioridad. El parámetro DeliveryNotificationOption especifica dos valores y OnSuccessOnFailure. El remitente recibirá notificaciones por correo electrónico para confirmar el éxito o el error de la entrega del mensaje. El parámetro SmtpServer establece el servidor smtp.fabrikam.comSMTP en .

Ejemplo 3: Enviar correo electrónico a una lista de distribución de correo

En este ejemplo se envía un mensaje de correo electrónico a una lista de distribución 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 Send-MailMessage cmdlet usa el parámetro From para especificar el remitente del mensaje. El parámetro To especifica los destinatarios del mensaje. El parámetro Cc envía una copia del mensaje al destinatario especificado. El parámetro Bcc envía una copia ciega del mensaje. Una copia ciega es una dirección de correo electrónico que está oculta a los demás destinatarios. El parámetro Subject es el mensaje porque no se incluye el parámetro Body opcional.

El parámetro Credential especifica las credenciales de un administrador de dominio que se usan para enviar el mensaje. El parámetro UseSsl especifica que Capa de socket seguro (SSL) crea una conexión segura.

Parámetros

-Attachments

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

Type:String[]
Aliases:PsPath
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Bcc

Especifica las direcciones de correo electrónico que reciben una copia del correo, pero que no aparecen como destinatarios del mensaje. Escriba nombres (opcional) y la dirección de correo electrónico, como Name <someone@fabrikam.com>.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Body

Especifica el contenido del mensaje de correo electrónico.

Type:String
Position:2
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-BodyAsHtml

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

Type:SwitchParameter
Aliases:BAH
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Cc

Especifica las direcciones de correo electrónico a las que se envía una copia de carbono (CC) del mensaje de correo electrónico. Escriba nombres (opcional) y la dirección de correo electrónico, como Name <someone@fabrikam.com>.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Credential

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

Escriba un nombre de usuario, como User01 o Domain01\User01. O bien, escriba un objeto PSCredential , como uno del Get-Credential cmdlet .

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 SecureString , consulte ¿Cómo es secure is SecureString?.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-DeliveryNotificationOption

Especifica las opciones de notificación de entrega para el mensaje de correo electrónico. Se pueden especificar varios valores . None 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 From .

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

  • None: no hay notificación.
  • OnSuccess: notifica si la entrega se realiza correctamente.
  • OnFailure: notifica si la entrega no se realiza correctamente.
  • Delay: notifique si la entrega se retrasa.
  • Never: nunca notificar.

Estos valores se definen como una enumeración basada en marcas. Puede combinar varios valores para establecer varias marcas mediante este parámetro. Los valores se pueden pasar al parámetro DeliveryNotification como una matriz de valores o como una cadena separada por comas de esos valores. El cmdlet combinará los valores mediante una operación binary-OR. Pasar valores como una matriz es la opción más sencilla y también permite usar la finalización de tabulación en los valores.

Type:DeliveryNotificationOptions
Aliases:DNO
Accepted values:None, OnSuccess, OnFailure, Delay, Never
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Encoding

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

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

  • ascii: usa la codificación para el juego de caracteres ASCII (7 bits).
  • ansi: usa la codificación para la página de códigos ANSI de la referencia cultural actual. Esta opción se agregó en PowerShell 7.4.
  • bigendianunicode: codifica en formato UTF-16 mediante el orden de bytes big-endian.
  • bigendianutf32: codifica en formato UTF-32 mediante el orden de bytes big-endian.
  • oem: usa la codificación predeterminada para los programas de consola y MS-DOS.
  • unicode: codifica en formato UTF-16 mediante 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 identificadores 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 Ansi valor del parámetro Encoding para pasar el identificador numérico de la página de códigos ANSI de la referencia cultural actual sin tener que especificarlo manualmente.

Nota:

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

Type:Encoding
Aliases:BE
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:ASCII
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-From

Se requiere el parámetro From . Este parámetro especifica la dirección de correo electrónico del remitente. Escriba un nombre (opcional) y una dirección de correo electrónico, como Name <someone@fabrikam.com>.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Port

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

Type:Int32
Position:Named
Default value:25
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Priority

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

Type:MailPriority
Accepted values:Normal, High, Low
Position:Named
Default value:Normal
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ReplyTo

Especifica direcciones de correo electrónico adicionales (distintas de la dirección From) que se usarán para responder a este mensaje. Escriba nombres (opcional) y la dirección de correo electrónico, como Name <someone@fabrikam.com>.

Este parámetro se introdujo en PowerShell 6.2.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters: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 $PSEmailServer variable de preferencia. Si no se establece la variable de preferencia y no se usa este parámetro, se produce un error en el Send-MailMessage comando.

Type:String
Aliases:ComputerName
Position:3
Default value:$PSEmailServer
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Subject

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

Type:String
Aliases:sub
Position:1
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-To

Se requiere el parámetro To . Este parámetro especifica la dirección de correo electrónico del destinatario. Escriba nombres (opcional) y la dirección de correo electrónico, como Name <someone@fabrikam.com>.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-UseSsl

El protocolo Capa de sockets seguros (SSL) se usa para establecer una conexión segura con el equipo remoto para enviar correo. De forma predeterminada, no se usa SSL.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

Entradas

String

Puede canalizar la ruta de acceso y los nombres de archivo de los datos adjuntos a este cmdlet.

Salidas

None

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 la plataforma DE0005. Este cmdlet no garantiza conexiones seguras a servidores SMTP.

DE0005 sugiere el uso de la biblioteca de terceros MailKit. Si usa Exchange Online, puede usar Send-MgUserMail desde el SDK de PowerShell de Microsoft Graph.