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 OnSuccess
OnFailure
. 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
È 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.