通过powershell发送电子邮件不起作用

时间:2016-09-12 15:01:28

标签: c# powershell

我正在编写一个脚本,通过PowerShell向人们发送电子邮件。它在某些计算机上发送良好,但在其他计算机上它根本不发送我知道两台计算机配置不完全相同。

我无法理解为什么。

我尝试添加2>>命令末尾的c:\ error.txt,它没有记录任何内容。

我的代码(出于保密原因,我更改了smtp和电子邮件):

            File.Delete(@"C:\Temp\Email2Send.ps1");
            var strVar_EMAIL_BOX = "myemail@email.com";
            TextWriter tw = new StreamWriter(@"C:\Temp\Email2Send.ps1");
            tw.WriteLine("$OutputEncoding = [Console]::OutputEncoding");
            tw.WriteLine("$smtp = \"forwarder.mail.xxxxxx.com\"");
            tw.WriteLine("$to = \"" + To + "\"");
            tw.WriteLine("$from = \"" + strVar_EMAIL_BOX + "\"");
            tw.WriteLine("$enc = [System.Text.Encoding]::UTF8");
            tw.WriteLine("$subject = \"Suivi\"");
            tw.WriteLine("$body = \"" + Body + "\"");
            tw.WriteLine(@"send-MailMessage -SmtpServer $smtp -To $to -From $from -Subject $subject -Body $body -BodyAsHtml -Encoding $enc 2>> c:\errors.txt");
            tw.Close();
        }

        System.Diagnostics.Process process = new System.Diagnostics.Process();
        System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
        startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        startInfo.FileName = "cmd.exe";
        startInfo.Arguments = @"/C powershell -ExecutionPolicy Bypass -WindowStyle Hidden -command c:\Temp\Email2Send.ps1";
        process.StartInfo = startInfo;
        process.Start();

编辑:没关系我在发帖后2秒找到了解决方案。由于某种原因,在Windows路径中的某些计算机上没有正确链接PowerShell。将powershell更改为:%SYSTEMROOT%\ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe

1 个答案:

答案 0 :(得分:0)

发布后2秒我找到了解决方案。由于某种原因,在Windows路径中的某些计算机上没有正确链接PowerShell。将powershell更改为:%SYSTEMROOT%\ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe