Aracılığıyla paylaş


JavaScript için Azure İletişim E-postası istemci kitaplığı - sürüm 1.1.0

Bu paket, E-posta için Azure İletişim Hizmetleri için bir JavaScript/TypeScript SDK'sı içerir.

Başlangıç Yapmak

Önkoşullar

Bir Azure aboneliğine, bir İletişim Hizmeti Kaynağına ve etkin bir Etki Alanına sahip bir E-posta İletişim Kaynağına ihtiyacınız vardır.

Bu kaynakları oluşturmak için Azure Portal, Azure PowerShell veya .NET yönetim istemci kitaplığını kullanabilirsiniz.

Yükleniyor

npm install @azure/communication-email

Örnekler

EmailClient e-posta mesajları gönderme işlevselliği sağlar.

Authentication

E-posta istemcilerinin kimliği, Azure Portal'daki bir Azure İletişim Kaynağı'ndan alınan bağlantı dizesi kullanılarak doğrulanabilir.

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 Kimlik kitaplığını kullanarak Azure Active Directory ile de kimlik doğrulaması yapabilirsiniz. Aşağıda gösterilen DefaultAzureCredential sağlayıcısını veya Azure SDK ile sağlanan diğer kimlik bilgisi sağlayıcılarını kullanmak için lütfen paketi yükleyin @azure/identity :

npm install @azure/identity

@azure/identity paketi, uygulamanızın bunu yapmak için kullanabileceği çeşitli kimlik bilgisi türleri sağlar. @azure/identity için README, başlangıç yapmanıza yardımcı olacak daha fazla detay ve örnekler sunar. AZURE_CLIENT_SECRET, DefaultAzureCredential nesnesi oluşturmak için AZURE_CLIENT_ID ve AZURE_TENANT_ID ortam değişkenleri gerekir.

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);

E-posta Mesajı Gönder

E-posta iletisi göndermek için beginSendEmailClient işlevini çağırın. Bu bir poller döndürecektir. İşlemin durumunu kontrol etmek ve bittiğinde sonucu almak için bu poller'ı kullanabilirsiniz.

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();

Birden çok alıcıya e-posta iletisi gönderme

Birden fazla alıcıya e-posta iletisi göndermek için her alıcı türü için bir nesne ve her alıcı için bir nesne ekleyin.

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();

Eklerle E-posta Gönder

Azure İletişim Hizmetleri, ekleri olan e-posta göndermeyi destekler.

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();

Satır İçi Eklerle E-posta Gönderme

Azure İletişim Hizmetleri, satır içi eklerle e-posta göndermeyi destekler. Bir attachment parametreye isteğe bağlı contentId bir parametre eklemek, onu satır içi bir ek haline getirir.

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();

Sorun giderme

Ağaç kesimi

Loglamayı etkinleştirmek, hatalarla ilgili yararlı bilgilerin ortaya çıkmasına yardımcı olabilir. HTTP isteklerinin ve yanıtlarının günlüğünü görmek için ortam değişkenini AZURE_LOG_LEVEL olarak infoayarlayın. Alternatif olarak, çalışma zamanında setLogLevel@azure/logger çağrılarak günlük tutma etkinleştirilebilir.

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Sonraki Adımlar

Contributing

Bu proje katkıları ve önerileri memnuniyetle karşılar. Çoğu katkı, Katkıda Bulunan Lisans Sözleşmesi'ni (CLA) kabul ederek bize katkınızı kullanma hakları verme hakkına sahip olduğunuzu bildirmenizi gerektirir. Ayrıntılar için cla.microsoft.com adresini ziyaret edin.

Bu projede Microsoft Açık Kaynak Kullanım Şartları kabul edilmiştir. Daha fazla bilgi için bkz. Davranış Kuralları SSS veya ek sorularınız veya yorumlarınızla opencode@microsoft.com iletişime geçin.