このパッケージには、Azure Communication Services for Email 用の JavaScript/TypeScript SDK が含まれています。
作業の開始
[前提条件]
Azure サブスクリプション、Communication Service リソース、およびアクティブなドメインを持つ電子メール通信リソースが必要です。
これらのリソースを作成するには、 Azure portal、 Azure PowerShell、または .NET 管理クライアント ライブラリを使用できます。
[インストール中]
npm install @azure/communication-email
例示
EmailClient 電子メール メッセージを送信する機能を提供します。
Authentication
電子メール クライアントは、 Azure portal の Azure 通信リソースから取得した接続文字列を使用して認証できます。
import { EmailClient } from "@azure/communication-email";
const connectionString = `endpoint=https://<resource-name>.communication.azure.com/;accessKey=<Base64-Encoded-Key>`;
const client = new EmailClient(connectionString);
Azure ID ライブラリを使用して Azure Active Directory で認証することもできます。 以下に示す DefaultAzureCredential プロバイダー、または Azure SDK で提供されているその他の資格情報プロバイダーを使用するには、 @azure/identity パッケージをインストールしてください。
npm install @azure/identity
@azure/identity パッケージには、アプリケーションでこれを行うために使用できるさまざまな資格情報の種類が用意されています。
@azure/identity の README には、作業を開始するための詳細とサンプルが記載されています。
DefaultAzureCredential オブジェクトを作成するには、AZURE_CLIENT_SECRET、AZURE_CLIENT_ID、AZURE_TENANT_ID環境変数が必要です。
import { DefaultAzureCredential } from "@azure/identity";
import { EmailClient } from "@azure/communication-email";
const endpoint = "https://<resource-name>.communication.azure.com";
const credential = new DefaultAzureCredential();
const client = new EmailClient(endpoint, credential);
電子メール メッセージを送信する
電子メール メッセージを送信するには、beginSendから EmailClient 関数を呼び出します。 これにより、ポーラーが返されます。 このポーラーを使用して、操作の状態を確認し、終了後に結果を取得できます。
import { DefaultAzureCredential } from "@azure/identity";
import { EmailClient } from "@azure/communication-email";
const endpoint = "https://<resource-name>.communication.azure.com";
const credential = new DefaultAzureCredential();
const client = new EmailClient(endpoint, credential);
const message = {
senderAddress: "sender@contoso.com",
content: {
subject: "This is the subject",
plainText: "This is the body",
},
recipients: {
to: [
{
address: "customer@domain.com",
displayName: "Customer Name",
},
],
},
};
const poller = await client.beginSend(message);
const response = await poller.pollUntilDone();
複数の受信者に電子メールメッセージを送信する
複数の受信者に電子メールメッセージを送信するには、受信者タイプごとにオブジェクトを追加し、受信者ごとにオブジェクトを追加します。
import { DefaultAzureCredential } from "@azure/identity";
import { EmailClient } from "@azure/communication-email";
const endpoint = "https://<resource-name>.communication.azure.com";
const credential = new DefaultAzureCredential();
const client = new EmailClient(endpoint, credential);
const message = {
senderAddress: "sender@contoso.com",
content: {
subject: "This is the subject",
plainText: "This is the body",
},
recipients: {
to: [
{
address: "customer1@domain.com",
displayName: "Customer Name 1",
},
{
address: "customer2@domain.com",
displayName: "Customer Name 2",
},
],
cc: [
{
address: "ccCustomer1@domain.com",
displayName: " CC Customer 1",
},
{
address: "ccCustomer2@domain.com",
displayName: "CC Customer 2",
},
],
bcc: [
{
address: "bccCustomer1@domain.com",
displayName: " BCC Customer 1",
},
{
address: "bccCustomer2@domain.com",
displayName: "BCC Customer 2",
},
],
},
};
const poller = await client.beginSend(message);
const response = await poller.pollUntilDone();
添付ファイルを含む電子メールを送信する
Azure Communication Services では、添付ファイル付きの電子メールの送信がサポートされています。
import { DefaultAzureCredential } from "@azure/identity";
import { EmailClient } from "@azure/communication-email";
import { basename } from "node:path";
import { readFileSync } from "node:fs";
const endpoint = "https://<resource-name>.communication.azure.com";
const credential = new DefaultAzureCredential();
const client = new EmailClient(endpoint, credential);
const filePath = "path/to/readme.txt";
const message = {
senderAddress: "sender@contoso.com",
content: {
subject: "This is the subject",
plainText: "This is the body",
},
recipients: {
to: [
{
address: "customer@domain.com",
displayName: "Customer Name",
},
],
},
attachments: [
{
name: basename(filePath),
contentType: "text/plain",
contentInBase64: readFileSync(filePath, "base64"),
},
],
};
const poller = await client.beginSend(message);
const response = await poller.pollUntilDone();
インライン添付ファイル付きの電子メールの送信
Azure Communication Services では、インライン添付ファイル付きの電子メールの送信がサポートされています。
オプションの contentId パラメータを attachment に追加すると、インライン添付ファイルになります。
import { DefaultAzureCredential } from "@azure/identity";
import { EmailClient } from "@azure/communication-email";
import { readFileSync } from "node:fs";
const endpoint = "https://<resource-name>.communication.azure.com";
const credential = new DefaultAzureCredential();
const client = new EmailClient(endpoint, credential);
const imageBuffer = readFileSync("path/to/my_inline_image.jpg");
const contentInBase64 = imageBuffer.toString("base64");
const message = {
senderAddress: "sender@contoso.com",
content: {
subject: "This is the subject",
plainText: "This is the body",
html: '<html>This is the body<br /><img src="cid:inline_image" /></html>',
},
recipients: {
to: [
{
address: "customer@domain.com",
displayName: "Customer Name",
},
],
},
attachments: [
{
name: "my_inline_image.jpg",
contentType: "image/jpeg",
contentInBase64: contentInBase64,
contentId: "inline_image",
},
],
};
const poller = await client.beginSend(message);
const response = await poller.pollUntilDone();
トラブルシューティング
ロギング(記録)
ログ記録を有効にすると、エラーに関する有用な情報を明らかにするのに役立つ場合があります。 HTTP 要求と応答のログを表示するには、AZURE_LOG_LEVEL 環境変数を infoに設定します。 または、setLogLevelで @azure/logger を呼び出すことによって、実行時にログを有効にすることもできます。
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
次のステップ
Contributing
このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの投稿では、お客様が投稿を使用する権利を当社に付与する権利を有し、実際に行うことを宣言する共同作成者ライセンス契約 (CLA) に同意する必要があります。 詳細については、 cla.microsoft.com をご覧ください。
このプロジェクトは、「Microsoft のオープン ソースの倫理規定」を採用しています。 詳細については、行動規範に関する FAQ を参照するか、その他の質問やコメントを opencode@microsoft.com にお問い合わせください。
Azure SDK for JavaScript