Как отправить письмо с помощью PowerShell

Я хотел бы отправить письмо от PowerShell, поэтому я использую эту команду:

$EmailFrom = "[email protected]"
$EmailTo = "[email protected]"  
$Subject = "today date"
$Body = "TODAY SYSTEM DATE=01/04/2016  SYSTEM TIME=11:32:05.50"
$SMTPServer = "smtp.mail.yahoo.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)   
$SMTPClient.EnableSsl = $true    
$SMTPClient.Credentials = New-Object 
System.Net.NetworkCredential("[email protected]", "password")    
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)

Эта команда не работает для почты Yahoo или Outlook, но работает для моей почты Gmail. Что-то не так, что я сделал?

Ответ 1

Следующий фрагмент кода действительно работает для меня:

$Username = "MyUserName";
$Password = "MyPassword";
$path = "C:\attachment.txt";

function Send-ToEmail([string]$email, [string]$attachmentpath){

    $message = new-object Net.Mail.MailMessage;
    $message.From = "[email protected]";
    $message.To.Add($email);
    $message.Subject = "subject text here...";
    $message.Body = "body text here...";
    $attachment = New-Object Net.Mail.Attachment($attachmentpath);
    $message.Attachments.Add($attachment);

    $smtp = new-object Net.Mail.SmtpClient("smtp.gmail.com", "587");
    $smtp.EnableSSL = $true;
    $smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
    $smtp.send($message);
    write-host "Mail Sent" ; 
    $attachment.Dispose();
 }
Send-ToEmail  -email "[email protected]" -attachmentpath $path;

Ответ 3

Иногда вам может понадобиться установить для EnableSs1 значение false