Office 365 Direct Send 및 PowerShell을 사용하여 이메일 보내기

당신은 PowerShell을 사용하여 Office 365로 이메일을 보낼 수 있다는 사실을 알고 계셨나요? 이 기사에서는 Office 365 Direct Send 및 PowerShell의 Send-MailMessage cmdlet을 사용하여 이메일을 보내는 방법을 배우게 될 것입니다.

PowerShell을 사용하여 이메일을 보내는 것에 대한 심층적인 내용을 알고 싶다면, 이 Send-MailMessage에 대한 심층적인 튜토리얼을 확인해보세요.

Office 365 Direct Send vs. SMTP Client Submission

PowerShell로 Office 365를 통해 이메일을 보내는 방법은 하나뿐이 아닙니다. Office 365에서는 두 가지 지원되는 이메일 전송 방법이 있습니다. 그 옵션은 Direct SendSMTP Client Submission 또는 SMTP Authenticated Submission입니다.

SMTP Authenticated Submission

SMTP Authenticated Submission은 설정이 가장 간단합니다. 이 옵션을 선택하면 기기 또는 응용 프로그램에서 내 및 외부 조직 수신자에게 이메일을 보내기를 계획하는 경우 적합합니다. 이를 허용하려면 Office 365에서 별도의 조치를 취할 필요가 없습니다.

이 옵션을 사용하면 모든 발신자 주소를 사용할 수 있습니다. 그러나 주소는 확인된 수락된 도메인 중 하나에서 가져와야 합니다.

SMTP Authenticated Submission을 사용하려면 다음을 수행해야 합니다:

  • Office 365 사용자 메일박스(라이선스 필요)를 가져야 합니다. 이 이메일 주소는 메시지의 발신자로 나타납니다.
  • PowerShell(또는 다른 클라이언트)이 smtp.office365.com를 해결하고 도달할 수 있어야 합니다.
  • 클라이언트에서 Office 365로의 TCP 포트 587 또는 25가 열려 있어야 합니다.

Direct Send

약간 복잡성을 높이는 것은 직접 전송 옵션입니다. 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을 찾는 방법을 모르는 경우, 빠른 튜토리얼이 여기 있습니다:

  1. Office 365 관리 포털에 로그인합니다.
  2. 설정을 클릭하고 (1)을 선택합니다. 도메인을 클릭하고 (2)을 선택한 다음, 도메인 이름을 클릭하고 MX 주소 또는 값을 가리키는 위치를 복사합니다.
Finding Office 365 MX Endpoint URL

SMTP 인증된 제출

이메일을 보내는 첫 번째 방법은 SMTP 클라이언트 제출 또는 SMTP 인증된 제출을 통해 이메일을 보내는 것입니다. PowerShell의 Send-MailMessage cmdlet을 사용하여 Office 365를 통해 이메일을 보내기 위해 필요한 모든 매개변수를 제공할 수 있습니다.

아래는이 방법을 통해 이메일을 보낼 수 있는 코드 조각입니다.

먼저 PowerShell PScredential 객체를 정의한 다음 Send-MailMessage에서 필요한 모든 매개변수를 제공해야합니다.

# 자격 증명 가져오기
$credential = Get-Credential

## Send-MailMessage 매개변수 정의
$mailParams = @{
    SmtpServer                 = 'smtp.office365.com'
    Port                       = '587' # 또는 TLS를 사용하지 않는 경우 '25'
    UseSSL                     = $true ## TLS를 사용하지 않는 경우 또는 없는 경우
    Credential                 = $credential
    From                       = '[email protected]'
    To                         = '[email protected]', '[email protected]'
    Subject                    = "SMTP Client Submission - $(Get-Date -Format g)"
    Body                       = 'This is a test email using SMTP Client Submission'
    DeliveryNotificationOption = 'OnFailure', 'OnSuccess'
}

## 메시지 보내기
Send-MailMessage @mailParams

위의 코드를 실행하면 내부 수신자(yourdomain.com) 및 외부 도메인(notyourdomain.com)에서 수신 된 이메일을받아야합니다.

Internal Email
External email

직접 보내기 (TLS 필요)

SMTP Authenticated Submission과 유사하게 Send-MailMessage에 대한 거의 동일한 매개변수를 사용할 수 있습니다. 그러나 이번에는 To 수신자가 내부에만 있을 것입니다.

또한 PSCredential이 필요하지 않았다는 점에 유의하십시오.

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

## 이메일 보내기
Send-MailMessage @mailParams
Direct Send email

요약

Office 365은 이메일을 보내는 두 가지 다른 옵션을 제공합니다. 이 기사에서는 PowerShell을 예로 들어 두 가지를 보여주기 위해 사용했습니다. 그러나 PowerShell을 사용할 필요는 없습니다. 응용 프로그램이나 프로그래밍 언어가 TLS 인증을 지원하는 한 원하는 방법을 사용할 수 있습니다.

추가 읽기

Source:
https://adamtheautomator.com/office-365-direct-send/