你知道你可以使用Office 365和PowerShell发送电子邮件吗?在这篇文章中,您将学习如何使用Office 365直接发送和PowerShell的Send-MailMessage
cmdlet发送电子邮件。
如果您想深入了解如何使用PowerShell发送电子邮件,请查看这篇关于Send-MailMessage的深入教程。
Office 365直接发送与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驗證提交一樣,直接發送允許您使用任何寄件人地址。此外,寄件人地址必須來自您驗證過的接受域之一。
直接發送和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/