send-MailMessage not working

依然范特西╮ 提交于 2019-12-11 11:52:13

问题


I am using the send-MailMessage cmdlet in PowerShell version 2 and it gives me a error.

I tried using all the options which were mentioned in the earlier posts and it didn't help me.

This is the command that I am using:

send-MailMessage -from "abc@gmail.com" -to "def@gmail.com" 
                 -subject "test" -body"test" -smtp "smtp.gmail.com" 

I get an error:

Send-MailMessage : The SMTP server requires a secure connection or the client was not authenticated
e was: 5.7.0 Must issue a STARTTLS command first. l46sm12283804qgd.27 - gsmtp
At line:1 char:17
+ send-MailMessage <<<< -from "abc@gmail.com" -to "def@gmail.com" -subject "te
credential abc
+ CategoryInfo : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Se
ion
+ FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage

I tried using UseSsl= true and also by giving credentials and even then I was not able to send email. Could you let me know what I am missing here?


回答1:


In order to use gmail you need SSL, I'am not sure you can use Send-MailMessage try this :

$emailSmtpServer = "smtp.gmail.com"
$emailSmtpServerPort = "587"
$emailSmtpUser = "yourlogin@gmail.com"
$emailSmtpPass = "yourPassword"

$emailMessage = New-Object System.Net.Mail.MailMessage
$emailMessage.From = "yourlogin@gmail.com"
$emailMessage.To.Add("YourSendTo@mail.com")
$emailMessage.Subject = "Small mail for a friend"
$emailMessage.IsBodyHtml = $true
$emailMessage.Body = @"
<p><strong>Hello me</strong>.</p>
<p>It seems to work</p>
<p>JP</p>
"@

$SMTPClient = New-Object System.Net.Mail.SmtpClient( $emailSmtpServer , $emailSmtpServerPort )
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential( $emailSmtpUser , $emailSmtpPass );

$SMTPClient.Send( $emailMessage )

Edited :

To use mail attachment please have a look Sytem.Net.Mail.MailMessage documentation. You need first to create an Attachment and then to add it to the MailMessage Attacments collection.




回答2:


For those that come later, here is my two liner example, for the account "gmail-user@gmail.com". This can be scheduled.

$credentials = new-object Management.Automation.PSCredential “gmail-user@gmail.com”, (“gmail-user's password” | ConvertTo-SecureString -AsPlainText -Force)

Send-MailMessage -From "gmail-user@gmail.com" -to "someone-else@gmail.com" -Subject "Some subject"
-Body "Some body" -SmtpServer "smtp.gmail.com" -port 587 -UseSsl
-Credential $credentials -Attachments "C:\an-attachment.txt"


来源:https://stackoverflow.com/questions/25875471/send-mailmessage-not-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!