Используя powershell, я отправляю электронное письмо из c ++ и передаю параметры, если 1-й параметр содержит «Test Mail», то powershell принимает его как 2 параметра - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь отправить электронное письмо из кода c ++, используя скрипт powershell, как показано ниже

string sSubject = "Test Mail";
string sPsCmd = "Powershell.exe -executionpolicy remotesigned -File ";
string sMailBody = "Please find attachment";
string sFile = "C:\temp\test.txt";
string sMailPsFile = "C:\temp\Mail.ps1"
string sUsermailID = test@test.com
string sCmd = sPsCmd+sMailPsFile+" "+sUsermailID+" "+sFile+" "+sSubject+" "+sMailBody;
system(sCmd.c_str());`

Скрипт Powershell

param(
[string]$MailtTo,
[string]$FileToSend ,
[string]$MailSubject,
[string]$Body
)
$SmtpServer = 'smtp.server'  
$SmtpPort = '25'
$SmtpUser = 'testUser'  
$smtpPassword = 'password'  
$MailFrom = 'test@test.com'  
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $SmtpUser, 
$($smtpPassword | ConvertTo-SecureString -AsPlainText -Force)

$MailCount=0
Send-MailMessage -To $MailtTo -from $MailFrom -Subject $MailSubject -Body $Body -Attachment 
$FileToSend -SmtpServer $SmtpServer -Port $SmtpPort  -UseSsl -Credential $Credentials
$Host.Exit

Но скрипт принимает параметры, указанные ниже

param1 MailtTo = test@test.com
param2 FileToSend = filePath
param3 MailSubject = Test
param4 Body = Mail

1 Ответ

3 голосов
/ 31 марта 2020

Это нормальное поведение оболочки, вам нужно заключить в кавычки любой параметр, содержащий пробел (а также различные другие метасимволы ).

Как это

string sSubject = "\"Test Mail\"";

Одиночный цитаты также будут работать (однако я не эксперт PowerShell)

string sSubject = "'Test Mail'";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...