Send-MailMessage

Inviare un messaggio di posta elettronica.

Sintassi

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

Descrizione

Il Send-MailMessage cmdlet invia un messaggio di posta elettronica da PowerShell.

È necessario specificare un server SMTP (Simple Mail Transfer Protocol) o il Send-MailMessage comando non riesce. Utilizzare il parametro SmtpServer o impostare la $PSEmailServer variabile su un server SMTP valido. Il valore assegnato a $PSEmailServer è l'impostazione SMTP predefinita per PowerShell. Per altre informazioni, vedere about_Preference_Variables.

Avviso

Il cmdlet Send-MailMessage è obsoleto. Questo cmdlet non garantisce connessioni sicure ai server SMTP. Anche se in PowerShell non è disponibile alcuna sostituzione immediata, è consigliabile non usare Send-MailMessage. Per altre informazioni, vedere La nota sulla compatibilità della piattaforma DE0005.

Esempio

Esempio 1: Inviare un messaggio di posta elettronica da una persona a un'altra persona

Questo esempio invia un messaggio di posta elettronica da una persona a un'altra persona.

I parametri From, To e Subject sono obbligatori da Send-MailMessage. In questo esempio viene utilizzata la variabile predefinita $PSEmailServer per il server SMTP, pertanto il parametro SmtpServer non è necessario.

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

Il Send-MailMessage cmdlet usa il parametro From per specificare il mittente del messaggio. Il parametro To specifica il destinatario del messaggio. Il parametro Subject usa la stringa di testo Test mail come messaggio perché il parametro Corpo facoltativo non è incluso.

Esempio 2: Inviare un allegato

In questo esempio viene inviato un messaggio di posta elettronica con un allegato.

$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

Il Send-MailMessage cmdlet usa il parametro From per specificare il mittente del messaggio. Il parametro To specifica i destinatari del messaggio. Il parametro Subject descrive il contenuto del messaggio. Il parametro Body è il contenuto del messaggio.

Il parametro Attachments consente di specificare il file nella directory corrente collegata al messaggio di posta elettronica. Il parametro Priority imposta il messaggio su High priority. Il parametro DeliveryNotificationOption specifica due valori e OnSuccessOnFailure. Il mittente riceverà notifiche tramite posta elettronica per confermare l'esito positivo o negativo del recapito del messaggio. Il parametro SmtpServer imposta il server SMTP su smtp.fabrikam.com.

Esempio 3: Inviare un messaggio di posta elettronica a una lista di distribuzione

In questo esempio viene inviato un messaggio di posta elettronica a una lista di distribuzione.

$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

Il Send-MailMessage cmdlet usa il parametro From per specificare il mittente del messaggio. Il parametro To specifica i destinatari del messaggio. Il parametro Cc invia una copia del messaggio al destinatario specificato. Il parametro Ccn invia una copia non vedente del messaggio. Una copia non vedente è un indirizzo di posta elettronica nascosto agli altri destinatari. Il parametro Subject è il messaggio perché il parametro Body facoltativo non è incluso.

Il parametro Credential consente di specificare le credenziali di un amministratore di dominio per inviare il messaggio. Il parametro UseSsl specifica che Secure Socket Layer (SSL) crea una connessione sicura.

Parametri

-Attachments

Specifica il percorso e i nomi di file da allegare al messaggio di posta elettronica. È possibile usare questo parametro o inviare tramite pipe i percorsi e i nomi di file a Send-MailMessage.

Tipo:String[]
Aliases:PsPath
Position:Named
valore predefinito:None
Necessario:False
Accept pipeline input:True
Accept wildcard characters:False

-Bcc

Specifica gli indirizzi di posta elettronica che ricevono una copia del messaggio, ma non sono elencati come destinatari del messaggio. Immettere i nomi (facoltativi) e l'indirizzo di posta elettronica, ad esempio Name <someone@fabrikam.com>.

Tipo:String[]
Position:Named
valore predefinito:None
Necessario:False
Accept pipeline input:True
Accept wildcard characters:False

-Body

Specifica il contenuto del messaggio di posta elettronica.

Tipo:String
Position:2
valore predefinito:None
Necessario:False
Accept pipeline input:True
Accept wildcard characters:False

-BodyAsHtml

Specifica che il valore del parametro Body contiene HTML.

Tipo:SwitchParameter
Aliases:BAH
Position:Named
valore predefinito:None
Necessario:False
Accept pipeline input:True
Accept wildcard characters:False

-Cc

Specifica gli indirizzi di posta elettronica a cui viene inviata una copia di carbonio (CC) del messaggio di posta elettronica. Immettere i nomi (facoltativi) e l'indirizzo di posta elettronica, ad esempio Name <someone@fabrikam.com>.

Tipo:String[]
Position:Named
valore predefinito:None
Necessario:False
Accept pipeline input:True
Accept wildcard characters:False

-Credential

Specifica un account utente che dispone delle autorizzazioni per eseguire questa azione. Il valore predefinito è l'utente corrente.

Digitare un nome utente, ad esempio User01 o Domain01\User01. In alternativa, immettere un oggetto PSCredential , ad esempio uno del Get-Credential cmdlet .

Le credenziali vengono archiviate in un oggetto PSCredential e la password viene archiviata come SecureString.

Nota

Per altre informazioni sulla protezione dei dati SecureString , vedere How secure is SecureString?.

Tipo:PSCredential
Position:Named
valore predefinito:Current user
Necessario:False
Accept pipeline input:True
Accept wildcard characters:False

-DeliveryNotificationOption

Specifica le opzioni di notifica di recapito per il messaggio di posta elettronica. È possibile specificare più valori . None è il valore predefinito. L'alias per questo parametro è DNO.

Le notifiche di recapito vengono inviate all'indirizzo nel parametro From .

I valori accettabili per questo parametro sono i seguenti:

  • None: nessuna notifica.
  • OnSuccess: notifica se il recapito ha esito positivo.
  • OnFailure: notifica se il recapito non riesce.
  • Delay: notifica se il recapito è ritardato.
  • Never: non inviare mai una notifica.

Questi valori sono definiti come enumerazione basata su flag. È possibile combinare più valori per impostare più flag usando questo parametro. I valori possono essere passati al parametro DeliveryNotification come matrice di valori o come stringa delimitata da virgole di tali valori. Il cmdlet combina i valori usando un'operazione binary-OR. Il passaggio di valori come matrice è l'opzione più semplice e consente anche di usare il completamento tramite tabulazione sui valori.

Tipo:DeliveryNotificationOptions
Aliases:DNO
valori accettati:None, OnSuccess, OnFailure, Delay, Never
Position:Named
valore predefinito:None
Necessario:False
Accept pipeline input:True
Accept wildcard characters:False

-Encoding

Specifica il tipo di codifica per il file di destinazione. Il valore predefinito è utf8NoBOM.

I valori accettabili per questo parametro sono i seguenti:

  • ascii: usa la codifica per il set di caratteri ASCII (a 7 bit).
  • ansi: usa la codifica per per la tabella codici ANSI delle impostazioni cultura correnti. Questa opzione è stata aggiunta in PowerShell 7.4.
  • bigendianunicode: codifica in formato UTF-16 usando l'ordine dei byte big-endian.
  • bigendianutf32: codifica in formato UTF-32 usando l'ordine dei byte big-endian.
  • oem: usa la codifica predefinita per i programmi MS-DOS e console.
  • unicode: codifica in formato UTF-16 usando l'ordine dei byte little-endian.
  • utf7: codifica in formato UTF-7.
  • utf8: codifica in formato UTF-8.
  • utf8BOM: codifica in formato UTF-8 con byte order mark (BOM)
  • utf8NoBOM: codifica in formato UTF-8 senza byte order mark (BOM)
  • utf32: codifica in formato UTF-32.

A partire da PowerShell 6.2, il parametro Encoding consente anche ID numerici di tabelle codici registrate (ad esempio ) o nomi di stringhe di tabelle codici registrate (ad esempio -Encoding 1251-Encoding "windows-1251"). Per altre informazioni, vedere la documentazione di .NET per Encoding.CodePage.

A partire da PowerShell 7.4, è possibile usare il Ansi valore per il parametro Encoding per passare l'ID numerico per la tabella codici ANSI delle impostazioni cultura correnti senza doverlo specificare manualmente.

Nota

UTF-7* non è più consigliato per l'uso. A partire da PowerShell 7.1, viene scritto un avviso se si specifica utf7 per il parametro Encoding .

Tipo:Encoding
Aliases:BE
valori accettati:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
valore predefinito:ASCII
Necessario:False
Accept pipeline input:True
Accept wildcard characters:False

-From

Il parametro From è obbligatorio. Questo parametro specifica l'indirizzo di posta elettronica del mittente. Immettere un nome (facoltativo) e un indirizzo di posta elettronica, ad esempio Name <someone@fabrikam.com>.

Tipo:String
Position:Named
valore predefinito:None
Necessario:True
Accept pipeline input:True
Accept wildcard characters:False

-Port

Specifica una porta alternativa sul server SMTP. Il valore predefinito è 25, ovvero la porta SMTP predefinita.

Tipo:Int32
Position:Named
valore predefinito:25
Necessario:False
Accept pipeline input:True
Accept wildcard characters:False

-Priority

Specifica la priorità del messaggio di posta elettronica. Il valore predefinito è Normal. I valori accettabili per questo parametro sono Normal, High e Low.

Tipo:MailPriority
valori accettati:Normal, High, Low
Position:Named
valore predefinito:Normal
Necessario:False
Accept pipeline input:True
Accept wildcard characters:False

-ReplyTo

Specifica indirizzi di posta elettronica aggiuntivi (diversi dall'indirizzo Da) da utilizzare per rispondere a questo messaggio. Immettere i nomi (facoltativi) e l'indirizzo di posta elettronica, ad esempio Name <someone@fabrikam.com>.

Questo parametro è stato introdotto in PowerShell 6.2.

Tipo:String[]
Position:Named
valore predefinito:None
Necessario:False
Accept pipeline input:True
Accept wildcard characters:False

-SmtpServer

Specifica il nome del server SMTP che invia il messaggio di posta elettronica.

Il valore predefinito è il valore della $PSEmailServer variabile di preferenza. Se la variabile di preferenza non è impostata e questo parametro non viene usato, il Send-MailMessage comando ha esito negativo.

Tipo:String
Aliases:ComputerName
Position:3
valore predefinito:$PSEmailServer
Necessario:False
Accept pipeline input:True
Accept wildcard characters:False

-Subject

Il parametro Subject non è obbligatorio. Questo parametro specifica l'oggetto del messaggio di posta elettronica.

Tipo:String
Aliases:sub
Position:1
valore predefinito:None
Necessario:False
Accept pipeline input:True
Accept wildcard characters:False

-To

Il parametro To è obbligatorio. Questo parametro specifica l'indirizzo di posta elettronica del destinatario. Immettere i nomi (facoltativi) e l'indirizzo di posta elettronica, ad esempio Name <someone@fabrikam.com>.

Tipo:String[]
Position:0
valore predefinito:None
Necessario:True
Accept pipeline input:True
Accept wildcard characters:False

-UseSsl

Il protocollo SSL (Secure Sockets Layer) viene usato per stabilire una connessione sicura al computer remoto per inviare messaggi di posta elettronica. Per impostazione predefinita, SSL non viene usato.

Tipo:SwitchParameter
Position:Named
valore predefinito:None
Necessario:False
Accept pipeline input:True
Accept wildcard characters:False

Input

String

È possibile inviare tramite pipe il percorso e i nomi di file degli allegati a questo cmdlet.

Output

None

Questo cmdlet non restituisce output.

Note

Il cmdlet Send-MailMessage è obsoleto. Per altre informazioni, vedere La nota sulla compatibilità della piattaforma DE0005. Questo cmdlet non garantisce connessioni sicure ai server SMTP.

DE0005 suggerisce l'uso della libreria di terze parti MailKit. Se si usa Exchange Online, è possibile usare Send-MgUserMail da Microsoft Graph PowerShell SDK.