如何为PowerShell的Send-MailMessage命令配置发件人显示名
Send-MailMessage 发件人显示名配置方案
方案1:直接使用原生参数配置(无需创建MailMessage对象)
Send-MailMessage 原生支持标准邮箱地址格式,直接将From参数设置为"显示名 <邮箱地址>"格式即可生效,无需额外引入.Net对象。
修改后的代码如下:
$Mail = @{ 'To' = 'someone@domain.com' 'From' = "Lastname, Firstname <me@domain.com>" 'Subject' = "TEST NOTIFICATION" 'SMTPServer' = 'mail.domain.com' 'Encoding' = 'UTF8' 'Priority' = 'High' 'Body' = "Hi, this is a test" } Send-MailMessage @Mail
如果显示名包含中文、特殊符号,配合参数里的Encoding = 'UTF8'即可避免乱码问题。
方案2:使用System.Net.Mail.MailMessage对象实现
如果你需要做更复杂的邮件配置,确实可以通过创建.Net MailMessage对象实现,完整代码如下:
# 初始化邮件对象 $mailMessage = New-Object System.Net.Mail.MailMessage # 配置发件人:参数依次为邮箱地址、显示名、显示名编码 $mailMessage.From = New-Object System.Net.Mail.MailAddress("me@domain.com", "Lastname, Firstname", [System.Text.Encoding]::UTF8) # 添加收件人 $mailMessage.To.Add("someone@domain.com") # 配置其他邮件属性 $mailMessage.Subject = "TEST NOTIFICATION" $mailMessage.SubjectEncoding = [System.Text.Encoding]::UTF8 $mailMessage.Body = "Hi, this is a test" $mailMessage.BodyEncoding = [System.Text.Encoding]::UTF8 $mailMessage.Priority = [System.Net.Mail.MailPriority]::High # 初始化SMTP客户端并发送 $smtpClient = New-Object System.Net.Mail.SmtpClient("mail.domain.com") $smtpClient.Send($mailMessage)
内容的提问来源于stack exchange,提问作者ak2595
相关产品推荐
相关产品推荐

