빠른 시작: 첨부 파일이 포함된 이메일 보내기
이 빠른 시작에서는 이메일 SDK를 사용하여 첨부 파일이 포함된 이메일을 보내는 방법에 대해 알아봅니다.
Communication Services .NET 이메일 클라이언트 라이브러리를 사용하여 이메일 메시지를 보내 Azure Communication Services를 시작합니다.
팁
GitHub의 기본 이메일 전송 및 고급 이메일 전송 샘플 코드로 바로 건너뛰어 Azure Communication Services를 통해 이메일 전송 환경을 바로 시작합니다.
이메일 개체 모델 이해
다음 클래스 및 인터페이스는 C#용 Azure Communication Services 이메일 클라이언트 라이브러리의 주요 기능 중 일부를 처리합니다.
이름 | 설명 |
---|---|
EmailAddress | 이 클래스에는 이메일 주소와 표시 이름에 대한 옵션이 포함되어 있습니다. |
EmailAttachment | 이 클래스는 고유한 ID, 전자 메일 첨부 파일 MIME 형식 문자열, 콘텐츠에 대한 이진 데이터 및 인라인 첨부 파일로 정의하는 선택적 콘텐츠 ID를 수락하여 전자 메일 첨부 파일을 만듭니다. |
EmailClient | 이 클래스는 모든 이메일 기능에 필요합니다. 연결 문자열로 인스턴스화하고 이메일 메시지를 보내는 데 사용합니다. |
EmailClientOptions | 이 클래스는 특정 API 버전을 대상으로 하기 위해 EmailClient 인스턴스화에 추가될 수 있습니다. |
EmailContent | 이 클래스에는 이메일 메시지의 제목과 본문이 포함됩니다. PlainText 또는 Html 콘텐츠를 하나 이상 지정해야 합니다. |
EmailCustomHeader | 이 클래스를 사용하면 사용자 지정 헤더에 대한 이름 및 값 쌍을 추가할 수 있습니다. 헤더 이름 'x-priority' 또는 'x-msmail-priority'를 사용하여 이러한 헤더를 통해 이메일 중요도를 지정할 수도 있습니다. |
EmailMessage | 이 클래스는 보낸 사람, 콘텐츠 및 받는 사람을 결합합니다. 사용자 지정 헤더, 첨부 파일 및 회신 이메일 주소도 선택적으로 추가할 수 있습니다. |
EmailRecipients | 이 클래스는 참조 및 숨은 참조 수신자에 대한 선택적 목록을 포함하여 이메일 메시지 수신자에 대한 EmailAddress 개체 목록을 보유합니다. |
EmailSendOperation | 이 클래스는 비동기 이메일 보내기 작업을 나타내며 이메일 보내기 api 호출에서 반환됩니다. |
EmailSendResult | 이 클래스는 이메일 보내기 작업의 결과를 보관합니다. 작업 ID, 작업 상태 및 오류 개체(해당하는 경우)로 구성됩니다. |
EmailSendResult는 수행된 이메일 작업에 대해 다음 상태 반환합니다.
상태 | 설명 |
---|---|
NotStarted | 지금은 서비스에서 이 상태를 보내지 않습니다. |
실행 중 | 이메일 보내기 작업이 현재 진행 중이며 처리 중입니다. |
성공 | 이메일 보내기 작업이 오류 없이 완료되었으며 이메일이 배달 중입니다. 이 단계 이후의 이메일 배달에 대한 자세한 상태는 Azure Monitor 또는 Azure Event Grid를 통해 얻을 수 있습니다. 이메일 이벤트 구독 방법을 알아보세요. |
실패함 | 이메일 보내기 작업이 성공하지 못했고 오류가 발생했습니다. 이메일이 발송되지 않았습니다. 결과에는 실패 이유에 대한 자세한 내용이 포함된 오류 개체가 포함됩니다. |
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- 운영 체제에 대한 최신 버전의 .NET Core 클라이언트 라이브러리
- Azure Email Communication Services 리소스가 만들어져 도메인을 프로비저닝할 준비가 되었습니다. 이메일 커뮤니케이션 리소스 만들기 시작
- 이메일 도메인 및 연결 문자열과 연결된 활성 Communication Services 리소스입니다. 이메일 리소스를 커뮤니케이션 리소스와 연결하여 시작
이 빠른 시작을 완료하면 Azure 계정에서 USD 센트 이하의 작은 비용이 발생합니다.
참고 항목
확인된 자체 도메인에서 이메일을 보낼 수도 있습니다. Email Communication Service에 확인된 사용자 지정 도메인 추가
필수 구성 요소 확인
- 터미널 또는 명령 창에서
dotnet
명령을 실행하여 .NET 클라이언트 라이브러리가 설치되어 있는지 확인합니다. - Email Communication Services 리소스와 연결된 하위 도메인을 보려면 Azure Portal에 로그인하고 Email Communication Services 리소스를 찾은 다음 왼쪽 탐색 창에서 도메인 프로비저닝 탭을 엽니다.
새 C# 애플리케이션 만들기
콘솔 창(예: cmd, PowerShell 또는 Bash)에서 dotnet new
명령을 사용하여 EmailQuickstart
라는 새 콘솔 앱을 만듭니다. 이 명령은 Program.cs라는 원본 파일 하나만 들어 있는 간단한 "Hello World" C# 프로젝트를 만듭니다.
dotnet new console -o EmailQuickstart
디렉터리를 새로 만든 앱 폴더로 변경하고 dotnet build
명령을 사용하여 애플리케이션을 컴파일합니다.
cd EmailQuickstart
dotnet build
패키지 설치
애플리케이션 디렉터리에 있는 동안 dotnet add package
명령을 사용하여 .NET 패키지용 Azure Communication Services 이메일 클라이언트 라이브러리를 설치합니다.
dotnet add package Azure.Communication.Email
인증을 사용하여 이메일 클라이언트 만들기
Program.cs를 열고 기존 코드를 다음으로 대체하여 Azure.Communication.Email
네임스페이스와 프로그램 실행 시작점을 포함하기 위한 using
지시문을 추가합니다.
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Azure;
using Azure.Communication.Email;
namespace SendEmail
{
internal class Program
{
static async Task Main(string[] args)
{
}
}
}
이메일 클라이언트를 인증하는 데 사용할 수 있는 몇 가지 옵션이 있습니다.
텍스트 편집기에서 Program.cs를 열고 Main
메서드의 본문을 코드로 바꿔 연결 문자열로 EmailClient
를 초기화합니다. 다음 코드는 COMMUNICATION_SERVICES_CONNECTION_STRING
이라는 환경 변수에서 리소스에 대한 연결 문자열을 검색합니다. 리소스의 연결 문자열을 관리하는 방법을 알아봅니다.
// This code demonstrates how to fetch your connection string
// from an environment variable.
string connectionString = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_CONNECTION_STRING");
EmailClient emailClient = new EmailClient(connectionString);
첨부 파일이 있는 이메일 메시지 보내기
EmailAttachment 개체를 정의하고 EmailMessage 개체에 추가하여 첨부 파일을 추가할 수 있습니다. 첨부 파일을 읽고 Base64를 사용하여 인코딩하세요.
// Create the email content
var emailContent = new EmailContent("Welcome to Azure Communication Service Email APIs.")
{
PlainText = "This email message is sent from Azure Communication Service Email.",
Html = "<html><body><h1>Quick send email test</h1><br/><h4>This email message is sent from Azure Communication Service Email.</h4><p>This mail was sent using .NET SDK!!</p></body></html>"
};
// Create the EmailMessage
var emailMessage = new EmailMessage(
senderAddress: "donotreply@xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.azurecomm.net" // The email address of the domain registered with the Communication Services resource
recipientAddress: "emailalias@contoso.com"
content: emailContent);
// Create the EmailAttachment
var filePath = "C:\Users\Documents\attachment.pdf";
byte[] bytes = File.ReadAllBytes(filePath);
var contentBinaryData = new BinaryData(bytes);
var emailAttachment = new EmailAttachment("attachment.pdf", MediaTypeNames.Application.Pdf, contentBinaryData);
emailMessage.Attachments.Add(emailAttachment);
try
{
EmailSendOperation emailSendOperation = emailClient.Send(WaitUntil.Completed, emailMessage);
Console.WriteLine($"Email Sent. Status = {emailSendOperation.Value.Status}");
/// Get the OperationId so that it can be used for tracking the message for troubleshooting
string operationId = emailSendOperation.Id;
Console.WriteLine($"Email operation id = {operationId}");
}
catch (RequestFailedException ex)
{
/// OperationID is contained in the exception message and can be used for troubleshooting purposes
Console.WriteLine($"Email send operation failed with error code: {ex.ErrorCode}, message: {ex.Message}");
}
dotnet run
명령을 사용하여 애플리케이션 디렉터리에서 애플리케이션을 실행합니다.
dotnet run
허용되는 MIME 형식
이메일 첨부 파일에 허용되는 MIME 형식에 대한 자세한 내용은 허용되는 MIME 형식 설명서를 참조하세요.
샘플 코드
GitHub에서 이 작업을 시연하는 샘플 앱을 다운로드할 수 있습니다.
Communication Services JS 이메일 클라이언트 라이브러리를 사용하여 이메일 메시지를 보내 Azure Communication Services를 시작합니다.
팁
GitHub의 기본 이메일 전송 및 고급 이메일 전송 샘플 코드로 바로 건너뛰어 Azure Communication Services를 통해 이메일 전송 환경을 바로 시작합니다.
이메일 개체 모델 이해
다음 클래스 및 인터페이스는 JavaScript용 Azure Communication Services 이메일 클라이언트 라이브러리의 주요 기능 중 일부를 처리합니다.
이름 | 설명 |
---|---|
EmailAddress | 이 클래스에는 이메일 주소와 표시 이름에 대한 옵션이 포함되어 있습니다. |
EmailAttachment | 이 클래스는 고유한 ID, 전자 메일 첨부 파일 MIME 형식 문자열, 콘텐츠에 대한 이진 데이터 및 인라인 첨부 파일로 정의하는 선택적 콘텐츠 ID를 수락하여 전자 메일 첨부 파일을 만듭니다. |
EmailClient | 이 클래스는 모든 이메일 기능에 필요합니다. 연결 문자열로 인스턴스화하고 이메일 메시지를 보내는 데 사용합니다. |
EmailClientOptions | 이 클래스는 특정 API 버전을 대상으로 하기 위해 EmailClient 인스턴스화에 추가될 수 있습니다. |
EmailContent | 이 클래스에는 이메일 메시지의 제목과 본문이 포함됩니다. PlainText 또는 Html 콘텐츠를 하나 이상 지정해야 합니다. |
EmailCustomHeader | 이 클래스를 사용하면 사용자 지정 헤더에 대한 이름 및 값 쌍을 추가할 수 있습니다. 헤더 이름 'x-priority' 또는 'x-msmail-priority'를 사용하여 이러한 헤더를 통해 이메일 중요도를 지정할 수도 있습니다. |
EmailMessage | 이 클래스는 보낸 사람, 콘텐츠 및 받는 사람을 결합합니다. 사용자 지정 헤더, 첨부 파일 및 회신 이메일 주소도 선택적으로 추가할 수 있습니다. |
EmailRecipients | 이 클래스는 참조 및 숨은 참조 수신자에 대한 선택적 목록을 포함하여 이메일 메시지 수신자에 대한 EmailAddress 개체 목록을 보유합니다. |
EmailSendResult | 이 클래스는 이메일 보내기 작업의 결과를 보관합니다. 작업 ID, 작업 상태 및 오류 개체(해당하는 경우)로 구성됩니다. |
EmailSendStatus | 이 클래스는 이메일 보내기 작업의 상태 세트를 나타냅니다. |
EmailSendResult는 수행된 이메일 작업에 대해 다음 상태 반환합니다.
상태 이름 | 설명 |
---|---|
isStarted | 이메일 보내기 작업이 현재 진행 중이고 처리 중이면 true를 반환합니다. |
isCompleted | 이메일 보내기 작업이 오류 없이 완료되었고 이메일이 배달 중이면 true를 반환합니다. 이 단계 이후의 이메일 배달에 대한 자세한 상태는 Azure Monitor 또는 Azure Event Grid를 통해 얻을 수 있습니다. 이메일 이벤트 구독 방법을 알아보세요. |
result | 이메일 보내기 작업이 완료된 경우에 존재하는 속성입니다. |
error | 이메일 보내기 작업이 성공하지 못했고 오류가 발생한 경우에 존재하는 속성입니다. 이메일이 발송되지 않았습니다. 결과에는 실패 이유에 대한 자세한 내용이 포함된 오류 개체가 포함됩니다. |
필수 조건
- Node.js(~14).
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- 도메인을 프로비저닝할 준비가 완료된 Azure Email Communication Services 리소스. Email Communication 리소스 만들기를 시작하세요.
- 이메일 도메인 및 연결 문자열과 연결된 활성 Azure Communication Services 리소스 Email Communication 리소스를 Azure Communication 리소스와 연결하여 시작하세요.
이 빠른 시작을 완료하면 Azure 계정에서 USD 센트 이하의 작은 비용이 발생합니다.
참고 항목
확인된 자체 도메인에서 이메일을 보낼 수도 있습니다. Email Communication Service에 확인된 사용자 지정 도메인 추가
필수 구성 요소 확인
- 터미널 또는 명령 창에서
node --version
를 실행하여 Node.js가 설치되어 있는지 확인합니다. - Email Communication Services 리소스로 확인된 도메인을 보려면 Azure Portal에 로그인하고 Email Communication Services 리소스를 찾은 다음 왼쪽 탐색 창에서 도메인 프로비저닝 탭을 엽니다.
애플리케이션 환경 설정
새 Node.js 애플리케이션 만들기
먼저 터미널 또는 명령 창을 열어 앱에 대한 새 디렉터리를 만들고 해당 디렉터리로 이동합니다.
mkdir email-quickstart && cd email-quickstart
npm init -y
를 실행하여 기본 설정으로 package.json 파일을 만듭니다.
npm init -y
텍스트 편집기를 사용하여 프로젝트 루트 디렉터리에 send-email.js라는 파일을 만듭니다. package.json의 "main" 속성을 "send-email.js"로 변경합니다. 다음 섹션에서는 이 빠른 시작의 소스 코드를 새로 만든 파일에 추가하는 방법을 보여줍니다.
패키지 설치
npm install
명령을 사용하여 JavaScript용 Azure Communication Services 이메일 클라이언트 라이브러리를 설치합니다.
npm install @azure/communication-email --save
--save
옵션은 라이브러리를 package.json 파일의 종속성으로 나열합니다.
인증을 사용하여 이메일 클라이언트 만들기
이메일 클라이언트를 인증하는 데 사용할 수 있는 몇 가지 옵션이 있습니다.
클라이언트 라이브러리에서 EmailClient를 가져와 연결 문자열로 인스턴스화합니다.
다음 코드는 dotenv 패키지를 사용하여 COMMUNICATION_SERVICES_CONNECTION_STRING
이라는 환경 변수에서 리소스에 대한 연결 문자열을 검색합니다. npm install
명령을 사용하여 dotenv 패키지를 설치합니다. 리소스의 연결 문자열을 관리하는 방법을 알아봅니다.
npm install dotenv
다음 코드를 send-email.js에 추가합니다.
const { EmailClient } = require("@azure/communication-email");
require("dotenv").config();
// This code demonstrates how to fetch your connection string
// from an environment variable.
const connectionString = process.env['COMMUNICATION_SERVICES_CONNECTION_STRING'];
const emailClient = new EmailClient(connectionString);
편의상 이 빠른 시작에서는 연결 문자열을 사용하지만 프로덕션 환경에서는 서비스 주체를 사용하는 것이 좋습니다.
첨부 파일이 있는 이메일 메시지 보내기
첨부 파일 개체를 정의하고 메시지에 추가하여 첨부 파일을 추가할 수 있습니다. 첨부 파일을 읽고 Base64를 사용하여 인코딩하세요.
const filePath = "<path-to-your-file>";
const message = {
sender: "<donotreply@xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.azurecomm.net>",
content: {
subject: "Welcome to Azure Communication Service Email.",
plainText: "<This email message is sent from Azure Communication Service Email using JavaScript SDK.>"
},
recipients: {
to: [
{
address: "<emailalias@emaildomain.com>",
displayName: "Customer Name",
}
]
},
attachments: [
{
name: path.basename(filePath),
contentType: "<mime-type-for-your-file>",
contentInBase64: readFileSync(filePath, "base64"),
}
]
};
const poller = await emailClient.beginSend(message);
const response = await poller.pollUntilDone();
허용되는 MIME 형식
이메일 첨부 파일에 허용되는 MIME 형식에 대한 자세한 내용은 허용되는 MIME 형식 설명서를 참조하세요.
샘플 코드
GitHub에서 이 작업을 시연하는 샘플 앱을 다운로드할 수 있습니다.
Communication Services Java Email SDK를 사용하여 Email 메시지를 보내 Azure Communication Services를 시작합니다.
팁
GitHub의 기본 이메일 전송 및 고급 이메일 전송 샘플 코드로 바로 건너뛰어 Azure Communication Services를 통해 이메일 전송 환경을 바로 시작합니다.
이메일 개체 모델 이해
다음 클래스 및 인터페이스는 Python용 Azure Communication Services Email SDK의 주요 기능 중 일부를 처리합니다.
이름 | 설명 |
---|---|
EmailAddress | 이 클래스에는 이메일 주소와 표시 이름에 대한 옵션이 포함되어 있습니다. |
EmailAttachment | 이 인터페이스는 고유한 ID, 전자 메일 첨부 파일 MIME 형식 문자열, 콘텐츠 바이트 문자열 및 인라인 첨부 파일로 정의하는 선택적 콘텐츠 ID를 수락하여 전자 메일 첨부 파일을 만듭니다. |
EmailClient | 이 클래스는 모든 이메일 기능에 필요합니다. 연결 문자열로 인스턴스화하고 이메일 메시지를 보내는 데 사용합니다. |
EmailMessage | 이 클래스는 보낸 사람, 콘텐츠 및 받는 사람을 결합합니다. 사용자 지정 헤더, 첨부 파일 및 회신 이메일 주소도 선택적으로 추가할 수 있습니다. |
EmailSendResult | 이 클래스는 이메일 보내기 작업의 결과를 보관합니다. 작업 ID, 작업 상태 및 오류 개체(해당하는 경우)로 구성됩니다. |
EmailSendStatus | 이 클래스는 이메일 보내기 작업의 상태 세트를 나타냅니다. |
EmailSendResult는 수행된 이메일 작업에 대해 다음 상태 반환합니다.
상태 이름 | 설명 |
---|---|
NOT_STARTED | 지금은 서비스에서 이 상태를 보내지 않습니다. |
IN_PROGRESS | 이메일 보내기 작업이 현재 진행 중이며 처리 중입니다. |
SUCCESSFULLY_COMPLETED | 이메일 보내기 작업이 오류 없이 완료되었으며 이메일이 배달 중입니다. 이 단계 이후의 이메일 배달에 대한 자세한 상태는 Azure Monitor 또는 Azure Event Grid를 통해 얻을 수 있습니다. 이메일 이벤트 구독 방법을 알아보세요. |
실패 | 이메일 보내기 작업이 성공하지 못했고 오류가 발생했습니다. 이메일이 발송되지 않았습니다. 결과에는 실패 이유에 대한 자세한 내용이 포함된 오류 개체가 포함됩니다. |
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- JDK(Java Development Kit), 버전 8 이상.
- Apache Maven.
- 배포된 Communication Services 리소스 및 연결 문자열 자세한 내용은 Communication Services 리소스 만들기를 참조하세요.
- Azure Email Communication Services 리소스를 만들어 이메일 보내기를 시작합니다.
- 개발 환경용 관리 ID 설정. 관리 ID로 액세스 권한 부여를 참조하세요.
이 빠른 시작을 완료하면 Azure 계정에서 USD 센트 이하의 작은 비용이 발생합니다.
참고 항목
확인된 자체 도메인에서 이메일을 보낼 수도 있습니다. Email Communication Service에 확인된 사용자 지정 도메인을 추가하세요.
필수 구성 요소 확인
- 터미널 또는 명령 창에서
mvn -v
를 실행하여 Maven이 설치되어 있는지 확인합니다. - Email Communication Services 리소스로 확인된 도메인을 보려면 Azure portal에 로그인합니다. Email Communication Services 리소스를 찾아 왼쪽 탐색 창에서 도메인 프로비저닝 탭을 엽니다.
애플리케이션 환경 설정
이메일을 보내기 위한 환경을 설정하려면 다음 섹션의 단계를 수행합니다.
새 Java 애플리케이션 만들기
터미널 또는 명령 창을 열고 Java 애플리케이션을 만들 디렉터리로 이동합니다. 다음 명령을 실행하여 maven-archetype-quickstart 템플릿에서 Java 프로젝트를 생성합니다.
mvn archetype:generate -DarchetypeArtifactId="maven-archetype-quickstart" -DarchetypeGroupId="org.apache.maven.archetypes" -DarchetypeVersion="1.4" -DgroupId="com.communication.quickstart" -DartifactId="communication-quickstart"
generate
목표는 artifactId
값과 동일한 이름으로 디렉터리를 만듭니다. 이 디렉터리 아래에서 src/main/java 디렉터리는 프로젝트 소스 코드를 포함하고, src/test/java 디렉터리는 테스트 원본을 포함하고, pom.xml 파일은 프로젝트의 POM(프로젝트 개체 모델)입니다.
패키지 설치
텍스트 편집기에서 pom.xml 파일을 엽니다. 종속성 그룹에 다음 종속성 요소를 추가합니다.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-email</artifactId>
<version>1.0.0-beta.2</version>
</dependency>
앱 프레임워크 설정
텍스트 편집기에서 /src/main/java/com/communication/quickstart/App.java를 열고, 가져오기 지시문을 추가하고, System.out.println("Hello world!");
문을 제거합니다.
package com.communication.quickstart;
import com.azure.communication.email.models.*;
import com.azure.communication.email.*;
import com.azure.core.util.polling.PollResponse;
import com.azure.core.util.polling.SyncPoller;
public class App
{
public static void main( String[] args )
{
// Quickstart code goes here.
}
}
인증을 사용하여 이메일 클라이언트 만들기
이메일 클라이언트를 인증하는 데 사용할 수 있는 몇 가지 옵션이 있습니다.
클라이언트를 인증하려면 연결 문자열로 EmailClient
를 인스턴스화합니다. 리소스의 연결 문자열을 관리하는 방법을 알아봅니다. com.azure.core.http.HttpClient
인터페이스를 구현하는 사용자 지정 HTTP 클라이언트로 클라이언트를 초기화할 수도 있습니다.
클라이언트를 인스턴스화하려면 다음 코드를 main
메서드에 추가합니다.
// You can get your connection string from your resource in the Azure portal.
String connectionString = "endpoint=https://<resource-name>.communication.azure.com/;accesskey=<access-key>";
EmailClient emailClient = new EmailClientBuilder()
.connectionString(connectionString)
.buildClient();
편의상 이 빠른 시작에서는 연결 문자열을 사용하지만 프로덕션 환경에서는 서비스 주체를 사용하는 것이 좋습니다.
첨부 파일이 있는 이메일 메시지 보내기
EmailAttachment 개체를 정의하고 EmailMessage 개체에 추가하여 첨부 파일을 추가할 수 있습니다. 첨부 파일을 읽고 Base64를 사용하여 인코딩하세요.
BinaryData attachmentContent = BinaryData.fromFile(new File("C:/attachment.txt").toPath());
EmailAttachment attachment = new EmailAttachment(
"attachment.txt",
"text/plain",
attachmentContent
);
EmailMessage message = new EmailMessage()
.setSenderAddress("<donotreply@xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.azurecomm.net>")
.setToRecipients("<emailalias@emaildomain.com>")
.setSubject("Welcome to Azure Communication Services Email")
.setBodyPlainText("This email message is sent from Azure Communication Services Email using the Java SDK.");
.setAttachments(attachment);
SyncPoller<EmailSendResult, EmailSendResult> poller = emailClient.beginSend(message, null);
PollResponse<EmailSendResult> response = poller.waitForCompletion();
System.out.println("Operation Id: " + response.getValue().getId());
허용되는 MIME 형식
이메일 첨부 파일에 허용되는 MIME 형식에 대한 자세한 내용은 허용되는 MIME 형식 설명서를 참조하세요.
샘플 코드
GitHub에서 이 작업을 시연하는 샘플 앱을 다운로드할 수 있습니다.
Communication Services Python Email SDK를 사용하여 Email 메시지를 보내 Azure Communication Services를 시작합니다.
팁
GitHub의 기본 이메일 전송 및 고급 이메일 전송 샘플 코드로 바로 건너뛰어 Azure Communication Services를 통해 이메일 전송 환경을 바로 시작합니다.
이메일 개체 모델 이해
다음 JSON 메시지 템플릿 및 응답 개체는 Python용 Azure Communication Services Email SDK의 주요 기능 중 일부를 보여줍니다.
message = {
"content": {
"subject": "str", # Subject of the email message. Required.
"html": "str", # Optional. Html version of the email message.
"plainText": "str" # Optional. Plain text version of the email
message.
},
"recipients": {
"to": [
{
"address": "str", # Email address. Required.
"displayName": "str" # Optional. Email display name.
}
],
"bcc": [
{
"address": "str", # Email address. Required.
"displayName": "str" # Optional. Email display name.
}
],
"cc": [
{
"address": "str", # Email address. Required.
"displayName": "str" # Optional. Email display name.
}
]
},
"senderAddress": "str", # Sender email address from a verified domain. Required.
"attachments": [
{
"name": "str" # Name of the attachment. Required.
"contentType": "str", # MIME type of the content being attached. Required.
"contentInBase64": "str", # Base64 encoded contents of the attachment. Required.
"contentId": "str" # Unique identifier (CID) to reference an inline attachment. Optional
}
],
"userEngagementTrackingDisabled": bool, # Optional. Indicates whether user engagement tracking should be disabled for this request if the resource-level user engagement tracking setting was already enabled in the control plane.
"headers": {
"str": "str" # Optional. Custom email headers to be passed.
},
"replyTo": [
{
"address": "str", # Email address. Required.
"displayName": "str" # Optional. Email display name.
}
]
}
response = {
"id": "str", # The unique id of the operation. Uses a UUID. Required.
"status": "str", # Status of operation. Required. Known values are:
"NotStarted", "Running", "Succeeded", and "Failed".
"error": {
"additionalInfo": [
{
"info": {}, # Optional. The additional info.
"type": "str" # Optional. The additional info type.
}
],
"code": "str", # Optional. The error code.
"details": [
...
],
"message": "str", # Optional. The error message.
"target": "str" # Optional. The error target.
}
}
response.status
값은 다음 표에 자세히 설명되어 있습니다.
상태 이름 | 설명 |
---|---|
InProgress | 이메일 보내기 작업이 현재 진행 중이며 처리 중입니다. |
성공 | 이메일 보내기 작업이 오류 없이 완료되었으며 이메일이 배달 중입니다. 이 단계 이후의 이메일 배달에 대한 자세한 상태는 Azure Monitor 또는 Azure Event Grid를 통해 얻을 수 있습니다. 이메일 이벤트 구독 방법을 알아보세요. |
실패함 | 이메일 보내기 작업이 성공하지 못했고 오류가 발생했습니다. 이메일이 발송되지 않았습니다. 결과에는 실패 이유에 대한 자세한 내용이 포함된 오류 개체가 포함됩니다. |
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- Python 3.7 이상.
- 도메인을 프로비저닝할 준비가 완료된 Azure Email Communication Services 리소스. Email Communication 리소스 만들기를 시작하세요.
- 이메일 도메인 및 연결 문자열과 연결된 활성 Azure Communication Services 리소스 Email Communication 리소스를 Azure Communication 리소스와 연결하여 시작하세요.
이 빠른 시작을 완료하면 Azure 계정에서 USD 센트 이하의 작은 비용이 발생합니다.
참고 항목
확인된 자체 도메인에서 이메일을 보낼 수도 있습니다. Email Communication Service에 확인된 사용자 지정 도메인 추가
필수 구성 요소 확인
- 터미널 또는 명령 창에서
python --version
명령을 실행하여 Python이 설치되어 있는지 확인합니다. - Email Communication Services 리소스로 확인된 도메인을 보려면 Azure portal에 로그인합니다. Email Communication Services 리소스를 찾아 왼쪽 탐색 창에서 도메인 프로비저닝 탭을 엽니다.
애플리케이션 환경 설정
이메일을 보내기 위한 환경을 설정하려면 다음 섹션의 단계를 수행합니다.
새 Python 애플리케이션 만들기
터미널 또는 명령 창을 엽니다. 그리고 다음 명령을 사용하여 가상 환경을 만들고 활성화합니다. 이 명령은 앱의 새 디렉터리를 만듭니다.
python -m venv email-quickstart
가상 환경의 루트 디렉터리로 이동한 후 다음 명령을 사용하여 활성화합니다.
cd email-quickstart .\Scripts\activate
텍스트 편집기를 사용하여 프로젝트 루트 디렉터리에 send-email.py라는 파일을 만들고 기본 예외 처리를 비롯한 프로그램의 구조를 추가합니다.
import os from azure.communication.email import EmailClient try: # Quickstart code goes here. except Exception as ex: print('Exception:') print(ex)
다음 섹션에서는 이 빠른 시작의 모든 소스 코드를 앞에서 만든 send-email.py 파일에 추가합니다.
패키지 설치
여전히 애플리케이션 디렉터리에 있는 동안 다음 명령을 사용하여 Python용 Azure Communication Services Email SDK 패키지를 설치합니다.
pip install azure-communication-email
인증을 사용하여 이메일 클라이언트 만들기
이메일 클라이언트를 인증하는 데 사용할 수 있는 몇 가지 옵션이 있습니다.
연결 문자열로 EmailClient를 인스턴스화합니다. 리소스의 연결 문자열을 관리하는 방법을 알아봅니다.
# Create the EmailClient object that you use to send Email messages.
email_client = EmailClient.from_connection_string(<connection_string>)
편의상 이 빠른 시작에서는 연결 문자열을 사용하지만 프로덕션 환경에서는 서비스 주체를 사용하는 것이 좋습니다.
첨부 파일이 있는 이메일 메시지 보내기
attachment
를 정의하고 message
개체의 attachments
에 추가하여 첨부 파일을 추가할 수 있습니다. 첨부 파일을 읽고 Base64를 사용하여 인코딩하세요. 바이트를 문자열로 디코딩하여 attachment
개체에 전달합니다.
import base64
with open("<path-to-your-attachment>", "rb") as file:
file_bytes_b64 = base64.b64encode(file.read())
message = {
"content": {
"subject": "This is the subject",
"plainText": "This is the body",
"html": "html><h1>This is the body</h1></html>"
},
"recipients": {
"to": [
{
"address": "<recipient1@emaildomain.com>",
"displayName": "Customer Name"
}
]
},
"senderAddress": "<donotreply@xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.azurecomm.net>",
"attachments": [
{
"name": "<your-attachment-name>",
"contentType": "<your-attachment-mime-type>",
"contentInBase64": file_bytes_b64.decode()
}
]
}
poller = email_client.begin_send(message)
result = poller.result()
허용되는 MIME 형식
이메일 첨부 파일에 허용되는 MIME 형식에 대한 자세한 내용은 허용되는 MIME 형식 설명서를 참조하세요.
샘플 코드
GitHub에서 이 작업을 시연하는 샘플 앱을 다운로드할 수 있습니다.
문제 해결
이메일 배달
이메일 배달과 관련된 문제를 해결하기 위해 이메일 배달 상태를 확인하여 배달 세부 정보를 캡처할 수 있습니다.
Important
전송 작업 상태에 대한 폴링을 통해 반환된 성공 결과는 이메일이 성공적으로 전송되었다는 팩트만 유효성 검사합니다. 수신자의 배달 상태에 대한 추가 정보를 가져오려면 이메일 이벤트 처리 방법을 참조해야 합니다.
이메일 제한
애플리케이션이 중단된 것으로 확인되면 이메일 보내기가 제한된 것일 수 있습니다. 로깅을 통해 또는 사용자 지정 정책을 구현하여 이 문제를 해결할 수 있습니다.
참고 항목
이 샌드박스 설정은 개발자가 애플리케이션 빌드를 시작하는 데 도움이 됩니다. 애플리케이션을 라이브로 전환할 준비가 되면 전송 볼륨을 늘리도록 점진적으로 요청할 수 있습니다. 속도 제한을 초과하는 메시지 볼륨을 보내야 하는 경우 원하는 전송 제한을 높이기 위해 지원 요청을 제출합니다.
Azure Communication Service 리소스 정리
Communication Services 구독을 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다. 리소스 정리에 대해 자세히 알아보세요.
다음 단계
이 빠른 시작에서는 Azure Communication Services를 사용하여 첨부 파일이 포함된 전자 메일을 보내는 방법을 알아보았습니다.
다음을 수행할 수도 있습니다.
- 이메일 상태를 수동으로 폴링하는 방법에 대해 알아봅니다.
- 여러 수신자에게 이메일 보내기에 대해 자세히 알아봅니다.
- 이메일 클라이언트 라이브러리 익히기