你知道吗,你可以使用 Office 365 通过 PowerShell 发送邮件吗?在这篇文章中,你将学习如何使用 Office 365 直接发送和 PowerShell 的 \texttt{Send-MailMessage} 命令来发送邮件。
如果你想深入了解如何使用 PowerShell 发送邮件,请查看这篇关于 \texttt{Send-MailMessage} 的深入教程。
Office 365 直接发送 vs. SMTP 客户端提交
在我们深入了解 PowerShell 之前,请了解通过 PowerShell 发送邮件到 Office 365 不只有一种方式。Office 365 有两种支持的发送邮件方式。这些选项分别是直接发送和SMTP 客户端提交或SMTP 认证提交。
SMTP 认证提交
SMTP 认证提交是最容易设置的方式。如果你打算从设备或应用程序发送邮件给内部和外部的收件人,你会选择这个选项。在 Office 365 中无需额外操作即可允许此操作。
此选项允许你使用任何发件人地址。但地址必须来自你已验证的接受域之一。
要使用SMTP 认证提交,你必须:
- 拥有一个已授权的 Office 365 用户邮箱。此电子邮件地址将显示为邮件的发件人。
- PowerShell(或其他客户端)必须能够解析并访问smtp.office365.com。
- 从客户端到 Office 365 必须打开 TCP 端口 587 或 25。
直接发送
升级一下复杂性的是直接发送选项。与SMTP身份验证提交类似,直接发送允许您使用任何发件人地址。此外,from地址必须来自您已验证的可接受域之一。
直接发送和SMTP身份验证提交之间的主要区别在于不允许外部接收者。如果您需要发送到组织外的电子邮件接收者,则直接发送对您无效。
直接发送有一些自己的要求/建议:
- 此发件人地址不必是有效的邮箱。但如果您计划使用此地址接收NDR或回复,则需要。
- 从您的客户端到Office 365的TCP端口25是打开的。
- 设备必须能够解析并访问您的MX终结点URL(例如yourdomain-com.mail.protection.outlook.com)
- A static public IP address. This is to update your SPF record and avoid your messages getting flagged as spam (optional but recommended)
如果您不知道如何找到MX终结点URL,这里是一个快速教程:
- 登录Office 365管理门户。
- 点击设置(1),选择域(2),点击域名(3),复制MX指向地址或值(4)。

SMTP身份验证提交
发送电子邮件的第一种方法是通过SMTP客户端提交或SMTP身份验证提交。使用PowerShell的Send-MailMessage
cmdlet,我们可以提供发送电子邮件所需的所有参数通过Office 365。
以下是通过此方法发送电子邮件的代码片段。
首先,您需要定义一个PowerShell PScredential对象,然后提供所有Send-MailMessage
需要的参数。
当您运行上面的代码时,您应该会收到一个发送给内部收件人(yourdomain.com)和外部域(notyourdomain.com)的电子邮件。


直接发送(需要TLS)
类似于SMTP身份验证提交,您可以使用几乎相同的参数Send-MailMessage
。但是这次,To
收件人将仅为内部。
还要注意,这次不需要PSCredential。

摘要
您可以看到Office 365提供了两种不同的发送电子邮件的选项。在本文中,我们以PowerShell为例进行演示。但您不必使用PowerShell。只要您的应用程序或编程语言支持TLS身份验证,您可以使用任何您喜欢的方法。
进一步阅读
Source:
https://adamtheautomator.com/office-365-direct-send/