Search code examples
powershellsmtp

How to send email with PowerShell


I'd like to send email from PowerShell, so I use this command:

$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)

This command didn't work for Yahoo mail or Outlook mail, but works for my Gmail. Is there anything wrong that I have done?


Solution

  • The following code snippet for sending SMTP e-mail through Gmail works for me:

    $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;