Send-MailMessage

전자 메일 메시지를 보냅니다.

Syntax

Send-MailMessage
    [-Attachments <String[]>]
    [-Bcc <String[]>]
    [[-Body] <String>]
    [-BodyAsHtml]
    [-Encoding <Encoding>]
    [-Cc <String[]>]
    [-DeliveryNotificationOption <DeliveryNotificationOptions>]
    -From <String>
    [[-SmtpServer] <String>]
    [-Priority <MailPriority>]
    [-ReplyTo <String[]>]
    [[-Subject] <String>]
    [-To] <String[]>
    [-Credential <PSCredential>]
    [-UseSsl]
    [-Port <Int32>]
    [<CommonParameters>]

Description

cmdlet은 Send-MailMessage PowerShell 내에서 전자 메일 메시지를 보냅니다.

SMTP(Simple Mail Transfer Protocol) 서버를 지정해야 합니다. 그렇지 않으면 명령이 Send-MailMessage 실패합니다. SmtpServer 매개 변수를 사용하거나 변수를 $PSEmailServer 유효한 SMTP 서버로 설정합니다. 할당된 $PSEmailServer 값은 PowerShell의 기본 SMTP 설정입니다. 자세한 내용은 about_Preference_Variables 참조하세요.

Warning

Send-MailMessage cmdlet은 사용되지 않습니다. 이 cmdlet은 SMTP 서버에 대한 보안 연결을 보장하지 않습니다. PowerShell에서 즉시 교체할 수 있는 것은 없지만 사용하지 Send-MailMessage않는 것이 좋습니다. 자세한 내용은 플랫폼 호환성 참고 DE0005를 참조하세요.

예제

예제 1: 한 사람으로부터 다른 사람에게 전자 메일 보내기

이 예제에서는 한 사람의 전자 메일 메시지를 다른 사람에게 보냅니다.

From, ToSubject 매개 변수는 .에 필요합니다Send-MailMessage. 이 예제에서는 SMTP 서버에 기본 변수를 사용 $PSEmailServer 하므로 SmtpServer 매개 변수가 필요하지 않습니다.

$sendMailMessageSplat = @{
    From = 'User01 <user01@fabrikam.com>'
    To = 'User02 <user02@fabrikam.com>'
    Subject = 'Test mail'
}
Send-MailMessage @sendMailMessageSplat

cmdlet은 Send-MailMessage From 매개 변수를 사용하여 메시지의 발신자를 지정합니다. To 매개 변수는 메시지의 받는 사람을 지정합니다. 선택적 본문 매개 변수가 포함되지 않기 때문에 Subject 매개 변수는 텍스트 문자열 테스트 메일을 메시지로 사용합니다.

예제 2: 첨부 파일 보내기

이 예제에서는 첨부 파일이 포함된 전자 메일 메시지를 보냅니다.

$sendMailMessageSplat = @{
    From = 'User01 <user01@fabrikam.com>'
    To = 'User02 <user02@fabrikam.com>', 'User03 <user03@fabrikam.com>'
    Subject = 'Sending the Attachment'
    Body = "Forgot to send the attachment. Sending now."
    Attachments = '.\data.csv'
    Priority = 'High'
    DeliveryNotificationOption = 'OnSuccess', 'OnFailure'
    SmtpServer = 'smtp.fabrikam.com'
}
Send-MailMessage @sendMailMessageSplat

cmdlet은 Send-MailMessage From 매개 변수를 사용하여 메시지의 발신자를 지정합니다. To 매개 변수는 메시지의 받는 사람을 지정합니다. Subject 매개 변수는 메시지의 내용을 설명합니다. Body 매개 변수는 메시지의 내용입니다.

Attachments 매개 변수는 전자 메일 메시지에 첨부된 현재 디렉터리의 파일을 지정합니다. Priority 매개 변수는 메시지를 우선 순위로 High 설정합니다. DeliveryNotificationOption 매개 변수는 두 값 OnSuccessOnFailure. 보낸 사람에게 메시지 배달의 성공 또는 실패를 확인하는 메일 알림 받습니다. SmtpServer 매개 변수는 SMTP 서버를 .로 smtp.fabrikam.com설정합니다.

예제 3: 메일링 목록에 전자 메일 보내기

이 예제에서는 메일 목록에 전자 메일 메시지를 보냅니다.

$sendMailMessageSplat = @{
    From = 'User01 <user01@fabrikam.com>'
    To = 'ITGroup <itdept@fabrikam.com>'
    Cc = 'User02 <user02@fabrikam.com>'
    Bcc = 'ITMgr <itmgr@fabrikam.com>'
    Subject = "Don't forget today's meeting!"
    Credential = 'domain01\admin01'
    UseSsl = $true
}
Send-MailMessage @sendMailMessageSplat

cmdlet은 Send-MailMessage From 매개 변수를 사용하여 메시지의 발신자를 지정합니다. To 매개 변수는 메시지의 받는 사람을 지정합니다. Cc 매개 변수는 지정된 받는 사람에게 메시지의 복사본을 보냅니다. 숨은 참조 매개 변수는 메시지의 블라인드 복사본을 보냅니다. 블라인드 복사본은 다른 받는 사람이 숨기는 전자 메일 주소입니다. 선택적 Body 매개 변수가 포함되지 않기 때문에 Subject 매개 변수는 메시지입니다.

자격 증명 매개 변수는 메시지를 보내는 데 사용할 기본 관리자의 자격 증명을 지정합니다. UseSsl 매개 변수는 SSL(Secure Socket Layer)이 보안 연결을 만들게 지정합니다.

매개 변수

-Attachments

전자 메일 메시지에 첨부할 파일의 경로 및 파일 이름을 지정합니다. 이 매개 변수를 사용하거나 경로 및 파일 이름을 파이프할 Send-MailMessage수 있습니다.

Type:String[]
Aliases:PsPath
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Bcc

메일의 복사본을 수신하지만 메시지의 받는 사람으로 나열되지 않는 전자 메일 주소를 지정합니다. 이름(선택 사항) 및 전자 메일 주소(예: Name <someone@fabrikam.com>.)를 입력합니다.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Body

전자 메일 메시지의 내용을 지정합니다.

Type:String
Position:2
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-BodyAsHtml

Body 매개 변수의 값에 HTML이 포함되도록 지정합니다.

Type:SwitchParameter
Aliases:BAH
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Cc

전자 메일 메시지의 CC(탄소 복사본)를 보낼 전자 메일 주소를 지정합니다. 이름(선택 사항) 및 전자 메일 주소(예: Name <someone@fabrikam.com>.)를 입력합니다.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Credential

이 작업을 수행할 권한이 있는 사용자 계정을 지정합니다. 기본값은 현재 사용자입니다.

User01 또는 Do기본01\User01과 같은 사용자 이름을 입력합니다. 또는 cmdlet의 개체와 같은 PSCredential 개체를 Get-Credential 입력합니다.

자격 증명은 PSCredential 개체에 저장되고 암호는 SecureString으로 저장됩니다.

참고 항목

SecureString 데이터 보호에 대한 자세한 내용은 SecureString이 얼마나 안전한가요?를 참조하세요.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-DeliveryNotificationOption

전자 메일 메시지에 대한 배달 알림 옵션을 지정합니다. 여러 값을 지정할 수 있습니다. None이 기본값입니다. 이 매개 변수의 별칭은 DNO입니다.

배달 알림은 From 매개 변수의 주소로 전송됩니다.

이 매개 변수에 허용되는 값은 다음과 같습니다.

  • None: 알림이 없습니다.
  • OnSuccess: 배달에 성공했는지 알립니다.
  • OnFailure: 배달에 실패하면 알립니다.
  • Delay: 배달이 지연되었는지 알립니다.
  • Never: 알리지 마세요.

이러한 값은 플래그 기반 열거형으로 정의됩니다. 이 매개 변수를 사용하여 여러 값을 결합하여 여러 플래그를 설정할 수 있습니다. 값은 DeliveryNotification 매개 변수에 값 배열 또는 해당 값의 쉼표로 구분된 문자열로 전달될 수 있습니다. cmdlet은 이진 OR 연산을 사용하여 값을 결합합니다. 값을 배열로 전달하는 것이 가장 간단한 옵션이며 값에 대한 탭 완성을 사용할 수도 있습니다.

Type:DeliveryNotificationOptions
Aliases:DNO
Accepted values:None, OnSuccess, OnFailure, Delay, Never
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Encoding

대상 파일의 인코딩 형식을 지정합니다. 기본값은 utf8NoBOM입니다.

이 매개 변수에 허용되는 값은 다음과 같습니다.

  • ascii: ASCII(7비트) 문자 집합의 인코딩을 사용합니다.
  • ansi: 현재 문화권의 ANSI 코드 페이지에 대한 인코딩을 사용합니다. 이 옵션은 PowerShell 7.4에 추가되었습니다.
  • bigendianunicode: big-endian 바이트 순서를 사용하여 UTF-16 형식으로 인코딩합니다.
  • bigendianutf32: big-endian 바이트 순서를 사용하여 UTF-32 형식으로 인코딩합니다.
  • oem: MS-DOS 및 콘솔 프로그램에 대한 기본 인코딩을 사용합니다.
  • unicode: little-endian 바이트 순서를 사용하여 UTF-16 형식으로 인코딩합니다.
  • utf7: UTF-7 형식으로 인코딩합니다.
  • utf8: UTF-8 형식으로 인코딩합니다.
  • utf8BOM: BOM(바이트 순서 표시)을 사용하여 UTF-8 형식으로 인코딩
  • utf8NoBOM: BOM(바이트 순서 표시)이 없는 UTF-8 형식으로 인코딩
  • utf32: UTF-32 형식으로 인코딩합니다.

PowerShell 6.2부터 인코딩 매개 변수는 등록된 코드 페이지(예: ) 또는 등록된 코드 페이지의 문자열 이름(예: -Encoding 1251-Encoding "windows-1251")의 숫자 ID도 허용합니다. 자세한 내용은 Encoding.CodePage에 대한 .NET 설명서를 참조하세요.

PowerShell 7.4부터 인코딩 매개 변수 값을 사용하여 Ansi 수동으로 지정하지 않고도 현재 문화권의 ANSI 코드 페이지에 대한 숫자 ID를 전달할 수 있습니다.

참고 항목

UTF-7*은 더 이상 사용하지 않는 것이 좋습니다. PowerShell 7.1을 기준으로 인코딩 매개 변수를 지정 utf7 하면 경고가 기록됩니다.

Type:Encoding
Aliases:BE
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:ASCII
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-From

From 매개 변수가 필요합니다. 이 매개 변수는 보낸 사람의 전자 메일 주소를 지정합니다. 이름(선택 사항) 및 전자 메일 주소(예: Name <someone@fabrikam.com>.)를 입력합니다.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Port

SMTP 서버에서 대체 포트를 지정합니다. 기본값은 기본 SMTP 포트인 25입니다.

Type:Int32
Position:Named
Default value:25
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Priority

전자 메일 메시지의 우선 순위를 지정합니다. Normal이 기본값입니다. 이 매개 변수에 허용되는 값은 Normal, High 및 Low입니다.

Type:MailPriority
Accepted values:Normal, High, Low
Position:Named
Default value:Normal
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ReplyTo

이 메시지에 회신하는 데 사용할 추가 전자 메일 주소(보낸 사람 주소 제외)를 지정합니다. 이름(선택 사항) 및 전자 메일 주소(예: Name <someone@fabrikam.com>.)를 입력합니다.

이 매개 변수는 PowerShell 6.2에서 도입되었습니다.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-SmtpServer

전자 메일 메시지를 보내는 SMTP 서버의 이름을 지정합니다.

기본값은 기본 설정 변수의 $PSEmailServer 값입니다. 기본 설정 변수가 설정되어 있지 않고 이 매개 변수를 사용하지 않으면 명령이 Send-MailMessage 실패합니다.

Type:String
Aliases:ComputerName
Position:3
Default value:$PSEmailServer
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Subject

Subject 매개 변수는 필요하지 않습니다. 이 매개 변수는 전자 메일 메시지의 제목을 지정합니다.

Type:String
Aliases:sub
Position:1
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-To

To 매개 변수가 필요합니다. 이 매개 변수는 받는 사람의 전자 메일 주소를 지정합니다. 이름(선택 사항) 및 전자 메일 주소(예: Name <someone@fabrikam.com>.)를 입력합니다.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-UseSsl

SSL(Secure Sockets Layer) 프로토콜은 메일을 보낼 원격 컴퓨터에 대한 보안 연결을 설정하는 데 사용됩니다. 기본적으로 SSL은 사용되지 않습니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

입력

String

첨부 파일의 경로와 파일 이름을 이 cmdlet으로 파이프할 수 있습니다.

출력

None

이 cmdlet은 출력을 반환하지 않습니다.

참고

Send-MailMessage cmdlet은 사용되지 않습니다. 자세한 내용은 플랫폼 호환성 참고 DE0005를 참조하세요. 이 cmdlet은 SMTP 서버에 대한 보안 연결을 보장하지 않습니다.

DE0005 는 타사 라이브러리 인 MailKit 사용을 제안합니다. Exchange Online을 사용하는 경우 Microsoft Graph PowerShell SDK에서 Send-MgUserMail을 사용할 수 있습니다.