当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 Office 365 Direct Send 和 PowerShell 发送电子邮件

作者:精品下载站 日期:2024-12-14 20:50:55 浏览:14 分类:玩电脑

如何使用 Office 365 Direct Send 和 PowerShell 发送电子邮件


您知道可以使用 Office 365 通过 PowerShell 发送电子邮件吗?在本文中,您将了解如何使用 Office 365 Direct Send 和 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
  • TCP 端口 587 或 25 必须从客户端向 Office 365 打开。

直接发送

直接发送选项会稍微提高复杂性。与SMTP 验证提交一样,直接发送允许您使用任何发件人地址。此外,发件人地址必须来自您经过验证的接受域之一。

直接发送SMTP验证提交之间的最大区别是不允许外部收件人。 如果您需要发送给组织外部的电子邮件收件人,直接发送将不适合您

直接发送有一些自己的要求/建议:

  • 该发件人地址不必是有效的邮箱。但如果您计划使用此地址接收 NDR 或回复,则需要此地址。
  • TCP 端口 25 从您的客户端向 Office 365 开放。
  • 设备必须能够解析并到达您的 MX 端点 URL(例如 yourdomain-com.mail.protection.outlook.com
  • 静态公共 IP 地址这是为了更新您的 SPF 记录并避免您的邮件被标记为垃圾邮件(可选但推荐)

如果您不知道如何查找 MX 端点 URL,请参阅以下快速教程:

  1. 登录 Office 365 管理门户。
  2. 点击设置 (1),选择域名 (2),点击域名 (3),将 MX 点复制到地址或值(4)。

[玩转系统] 如何使用 Office 365 Direct Send 和 PowerShell 发送电子邮件

SMTP 验证提交

发送电子邮件的第一种方法是通过 SMTP 客户端提交或 SMTP 身份验证提交。使用 PowerShell 的 Send-MailMessage cmdlet,我们可以提供通过 Office 365 发送电子邮件所需的所有参数。

以下是您可以用来通过此方法发送电子邮件的代码片段。

您首先需要定义一个 PowerShell PScredential 对象,然后提供 Send-MailMessage 所需的所有参数。

# Get the credential
$credential = Get-Credential

## Define the Send-MailMessage parameters
$mailParams = @{
    SmtpServer                 = 'smtp.office365.com'
    Port                       = '587' # or '25' if not using TLS
    UseSSL                     = $true ## or not if using non-TLS
    Credential                 = $credential
    From                       = '[email '
    To                         = '[email ', '[email '
    Subject                    = "SMTP Client Submission - $(Get-Date -Format g)"
    Body                       = 'This is a test email using SMTP Client Submission'
    DeliveryNotificationOption = 'OnFailure', 'OnSuccess'
}

## Send the message
Send-MailMessage @mailParams

当您运行上述代码时,您应该会收到内部收件人 (yourdomain.com) 和外部域 (notyourdomain.com) 收到的电子邮件。

[玩转系统] 如何使用 Office 365 Direct Send 和 PowerShell 发送电子邮件

[玩转系统] 如何使用 Office 365 Direct Send 和 PowerShell 发送电子邮件

直接发送(需要 TLS)

SMTP 身份验证提交类似,您可以对 Send-MailMessage 使用几乎相同的参数。不过这一次,To 收件人将只是内部收件人。

另请注意,不需要 PSCredential。

## Build parameters
$mailParams = @{
    SmtpServer                 = '<tenant>.mail.protection.outlook.com'
    Port                       = '25'
    UseSSL                     = $true   
    From                       = '[email '
    To                         = '[email '
    Subject                    = "Direct Send $(Get-Date -Format g)"
    Body                       = 'This is a test email using Direct Send'
    DeliveryNotificationOption = 'OnFailure', 'OnSuccess'
}

## Send the email
Send-MailMessage @mailParams

[玩转系统] 如何使用 Office 365 Direct Send 和 PowerShell 发送电子邮件

概括

您可以看到 Office 365 提供了两种不同的电子邮件发送选项。在本文中,我们使用 PowerShell 作为示例来演示这两者。但您不必使用 PowerShell。只要您的应用程序或编程语言支持 TLS 身份验证,您就可以使用任何您喜欢的方法。

进一步阅读

  • Microsoft Graph API 与 PowerShell 的强大功能未得到充分利用
  • 如何设置多功能设备或应用程序以使用 Office 365 发送电子邮件

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯