Sco*_*ein 41 security powershell gmail
我正在试图弄清楚如何在Send-MailMessagegmail中使用PowerShell V2 .
这是我到目前为止所拥有的.
$ss = New-Object Security.SecureString
foreach ($ch in "password".ToCharArray())
{
$ss.AppendChar($ch)
}
$cred = New-Object Management.Automation.PSCredential "uid@domain.com", $ss
Send-MailMessage -SmtpServer smtp.gmail.com -UseSsl -Credential $cred -Body...
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
Send-MailMessage : The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn
more at
At foo.ps1:18 char:21
+ Send-MailMessage <<<< `
+ CategoryInfo : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], SmtpException
+ FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage
Run Code Online (Sandbox Code Playgroud)
我做错了什么,或者还Send-MailMessage没有完全出炉(我在使用CTP 3)?
一些额外的限制
Get-Credential不会起作用Send-MailMessagecmdlet 感兴趣,通过正常的.Net API发送邮件是很好理解的.Chr*_*utt 46
刚发现这个问题..这是我的用于Gmail的PowerShell Send-MailMessage示例.经过测试和工作的解决方案:
$EmailFrom = "notifications@somedomain.com"
$EmailTo = "me@earth.com"
$Subject = "Notification from XYZ"
$Body = "this is a notification from XYZ Notifications.."
$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
Run Code Online (Sandbox Code Playgroud)
只需在$ SMTPClient.Credentials中更改$ EmailTo和用户名/密码..不要在您的用户名中包含@ gmail.com.
也许这是对其他人遇到这个问题的帮助..
小智 13
这应该可以解决您的问题
$credentials = New-Object Management.Automation.PSCredential “mailserver@yourcompany.com”, (“password” | ConvertTo-SecureString -AsPlainText -Force)
Run Code Online (Sandbox Code Playgroud)
然后使用您呼叫的凭证 Send-MailMessage -From $From -To $To -Body $Body $Body -SmtpServer {$smtpServer URI} -Credential $credentials -Verbose -UseSsl
小智 8
我刚遇到同样的问题并遇到了这篇文章.它实际上帮助我使用本机Send-MailMessage命令运行它,这是我的代码:
$cred = Get-Credential
Send-MailMessage ....... -SmtpServer "smtp.gmail.com" -UseSsl -Credential $cred -Port 587
Run Code Online (Sandbox Code Playgroud)
但是,为了让Gmail允许我使用SMTP服务器,我必须登录我的Gmail帐户,并通过此链接https://www.google.com/settings/security将"访问安全性较低的应用"设置为"已启用".最后它确实有效!!
ciao marco
我不确定您是否可以使用Send-MailMessage更改端口号,因为gmail适用于端口587.无论如何,这里是如何使用.NET SmtpClient通过gmail发送电子邮件:
$smtpClient = New-Object system.net.mail.smtpClient
$smtpClient.Host = 'smtp.gmail.com'
$smtpClient.Port = 587
$smtpClient.EnableSsl = $true
$smtpClient.Credentials = [Net.NetworkCredential](Get-Credential GmailUserID)
$smtpClient.Send('GmailUserID@gmail.com', 'yourself@somewhere.com', 'test subject', 'test message')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
99092 次 |
| 最近记录: |