Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 如何在Powershell中对邮件主题进行编码?_Email_Powershell_Character Encoding_Smtp - Fatal编程技术网

Email 如何在Powershell中对邮件主题进行编码?

Email 如何在Powershell中对邮件主题进行编码?,email,powershell,character-encoding,smtp,Email,Powershell,Character Encoding,Smtp,我正在尝试使用Powershell发送邮件,邮件主题和正文上带有日语字符。邮件发送成功,正文中的日文字符很好。但它在这个主题中并不起作用。我得到了=?iso-2022-jp?Q?=1B=24B=25F=259=25H=1B=28B?=而不是テスト 有人能帮我吗 代码: $eSubject = "テスト This is subject" $eBody = "テスト テスト テスト This is body" $Encode = [Text.Encoding]::GetEncoding("csIS

我正在尝试使用Powershell发送邮件,邮件主题和正文上带有日语字符。邮件发送成功,正文中的日文字符很好。但它在这个主题中并不起作用。我得到了
=?iso-2022-jp?Q?=1B=24B=25F=259=25H=1B=28B?=
而不是
テスト

有人能帮我吗

代码

$eSubject = "テスト This is subject"
$eBody = "テスト テスト テスト This is body"

$Encode = [Text.Encoding]::GetEncoding("csISO2022JP");
$s64 = [Convert]::ToBase64String($Encode.GetBytes($eSubject), [Base64FormattingOptions]::None)

$Mail = New-Object Net.Mail.MailMessage("From@mail.com","To@mail.com")
$Mail.Subject = [String]::Format("=?{0}?B?{1}?=", $Encode.HeaderName, $s64)

$View = [Net.Mail.AlternateView]::CreateAlternateViewFromString($eBody, $Encode, [Net.Mime.MediaTypeNames]::Text.Plain)
$View.TransferEncoding = [Net.Mime.TransferEncoding]::SevenBit
$Mail.AlternateViews.Add($View)

$SmtpClient = NEW-OBJECT Net.Mail.SmtpClient("localhost","25")
$SmtpClient.Send($Mail)
$eSubject = "テスト This is subject"
$eBody = "テスト テスト テスト This is body"

$Encode = [Text.Encoding]::GetEncoding("csISO2022JP");

$Mail = New-Object Net.Mail.MailMessage("From@mail.com","To@mail.com")
$Mail.Subject = $eSubject

$View = [Net.Mail.AlternateView]::CreateAlternateViewFromString($eBody, $Encode, [Net.Mime.MediaTypeNames]::Text.Plain)
$View.TransferEncoding = [Net.Mime.TransferEncoding]::SevenBit
$Mail.AlternateViews.Add($View)

$SmtpClient = NEW-OBJECT Net.Mail.SmtpClient("localhost","25")
$SmtpClient.Send($Mail)

使用默认CmdLet
Send-MailMessage
时,对我来说效果很好:

$EmailParams = @{
    To          = 'Destination@domain.com'
    From        = 'From@domain.com'
    Subject     = 'テスト This is the subject'
    Body        = 'テスト This is the body'
    SMTPServer  = 'YourSMTPServer'
    Encoding    = 'UTF8'
}
Send-MailMessage @EmailParams

我不知道怎么做。但它现在起作用了,我只是删除了主题的编码

代码

$eSubject = "テスト This is subject"
$eBody = "テスト テスト テスト This is body"

$Encode = [Text.Encoding]::GetEncoding("csISO2022JP");
$s64 = [Convert]::ToBase64String($Encode.GetBytes($eSubject), [Base64FormattingOptions]::None)

$Mail = New-Object Net.Mail.MailMessage("From@mail.com","To@mail.com")
$Mail.Subject = [String]::Format("=?{0}?B?{1}?=", $Encode.HeaderName, $s64)

$View = [Net.Mail.AlternateView]::CreateAlternateViewFromString($eBody, $Encode, [Net.Mime.MediaTypeNames]::Text.Plain)
$View.TransferEncoding = [Net.Mime.TransferEncoding]::SevenBit
$Mail.AlternateViews.Add($View)

$SmtpClient = NEW-OBJECT Net.Mail.SmtpClient("localhost","25")
$SmtpClient.Send($Mail)
$eSubject = "テスト This is subject"
$eBody = "テスト テスト テスト This is body"

$Encode = [Text.Encoding]::GetEncoding("csISO2022JP");

$Mail = New-Object Net.Mail.MailMessage("From@mail.com","To@mail.com")
$Mail.Subject = $eSubject

$View = [Net.Mail.AlternateView]::CreateAlternateViewFromString($eBody, $Encode, [Net.Mime.MediaTypeNames]::Text.Plain)
$View.TransferEncoding = [Net.Mime.TransferEncoding]::SevenBit
$Mail.AlternateViews.Add($View)

$SmtpClient = NEW-OBJECT Net.Mail.SmtpClient("localhost","25")
$SmtpClient.Send($Mail)