执行Send-MailMessage触发凭据提示,寻求无需认证发邮件方案
解决Send-MailMessage无需认证发送邮件的问题
你现在的代码里踩了个小坑:-Credential $from这行用错啦!$from只是从AD获取到的邮箱字符串,而-Credential参数要求的是PSCredential类型的对象,不是单纯的邮箱地址,这也是系统一直提示你输入凭据的核心原因之一。
要实现无需认证发送邮件,关键是移除不必要的认证参数,同时确保你的SMTP服务器支持匿名中继。下面是修正后的代码:
# 获取当前用户的邮箱地址 $from = (Get-ADUser $env:UserName -Properties emailaddress).emailaddress $To = "example@example.org" $Subject = "test2" $Body = "Test2" $SMTPServer = "10.98.0.20" $SMTPPort = 25 # 这里建议用整数类型,比字符串更规范 # 移除-Credential参数,因为我们要匿名发送邮件 Send-MailMessage -From $From -To $To -Subject $Subject -Body $Body -SmtpServer $SMTPServer -Port $SMTPPort
额外注意事项
- 首先得确认你的SMTP服务器(10.98.0.20)是否允许匿名中继。如果服务器本身强制要求认证才能发送,那你就绕不开输入凭据这一步,得联系邮件管理员确认服务器配置。
- 如果移除
-Credential后还是报错,大概率是服务器限制了允许匿名发送的IP范围,需要找管理员确认你的客户端IP是否在白名单里。 - 端口25是SMTP的默认端口,但有些服务器可能要求用587(STARTTLS)或465(SSL),如果25端口不行,可以试试这两个端口,不过匿名发送通常用25端口就够了。
内容的提问来源于stack exchange,提问作者hotsauceonerrything
相关产品推荐
相关产品推荐

