Tetikleyici E-posta uzantısını kullanma

E-posta Tetikleyici uzantısı (firestore-send-email), Cloud Firestore koleksiyonundaki dokümanlara göre otomatik olarak e-posta göndermenizi sağlar. Koleksiyona bir doküman eklediğinizde bu uzantı, dokümanın alanlarından oluşturulan bir e-posta gönderir. Dokümanın üst düzey alanları, to, cc ve bcc seçenekleri (her biri UID'leri destekler) dahil olmak üzere e-posta gönderenini ve alıcılarını belirtir. Belgenin message alanında, konu satırı ve e-posta gövdesi (düz metin veya HTML) gibi diğer e-posta öğeleri belirtilir.

Bu uzantıyı tetikleyecek temel bir örnek belge yazma işlemi aşağıda verilmiştir:

admin.firestore().collection('mail').add({
  to: 'someone@example.com',
  message: {
    subject: 'Hello from Firebase!',
    html: 'This is an <code>HTML</code> email body.',
  },
})

İsteğe bağlı olarak bu uzantıyı, Handlebars şablonlarını kullanarak e-postaları oluşturacak şekilde de yapılandırabilirsiniz.

Kurulum öncesi kurulum

Uzantı yüklemeden önce aşağıdaki adımları tamamlayın:

  1. Giden posta hizmetinizi ayarlayın.

    E-posta Tetikleme uzantısını yüklediğinizde, uzantının e-posta göndermek için kullandığı bir SMTP sunucusunun bağlantı ve kimlik doğrulama ayrıntılarını belirtmeniz gerekir. Bu, genellikle Sendgrid, Mailgun veya Mailchimp İşlemsel E-posta gibi bir e-posta yayınlama hizmeti tarafından sağlanır ancak kendi işlettiğiniz bir sunucu da olabilir.

  2. E-posta dokümanı koleksiyonu oluşturun.

    E-posta Tetikleyici uzantısı, belirttiğiniz bir Cloud Firestorekoleksiyondaki yeni dokümanları izler. Uzantı, yeni bir doküman bulduğunda dokümanın alanlarına göre bir e-posta gönderir. Bu amaçla herhangi bir Cloud Firestorekoleksiyonunu kullanabilirsiniz. Bu sayfadaki örneklerde email adlı bir koleksiyon kullanılmaktadır.

  3. E-posta dokümanlarınız koleksiyonu için güvenlik kuralları oluşturun.

    Bu uzantı, e-posta teslimini doğrudan istemci uygulamalarından tetiklemek için kullanılabilir. Ancak olası kötüye kullanımları önlemek için istemcilerin koleksiyona erişimini dikkatlice kontrol etmeniz gerekir (Kullanıcıların şirketinizin adresinden rastgele e-postalar göndermesini istemezsiniz).

    Güvenlik kuralları uygulamadan uygulamaya değişir ancak e-postaların her zaman yalnızca amaçlanan alıcılara gönderildiğinden ve serbest biçimli içeriğin minimum düzeyde tutulduğundan emin olmanız gerekir. Şablonlar bu konuda yardımcı olabilir. Şablona doldurulan verilerin, kullanıcının tetiklemesine izin verilmesi gerekenlerle ilgili beklentilerinizle eşleştiğini doğrulamak için güvenlik kurallarını kullanabilirsiniz.

  4. İsteğe bağlı: Kullanıcı koleksiyonu oluşturun.

    Bu uzantının temel kullanımında, ileti belgesinin to, cc ve bcc alanlarına e-posta adreslerini ekleyerek e-postanın alıcılarını belirtirsiniz. Alternatif olarak, Cloud Firestore'te bir kullanıcı veritabanınız varsa kullanıcıların UID'lerini kullanarak alıcıları belirtebilirsiniz. Bunun çalışması için kullanıcı koleksiyonunuzun aşağıdaki ölçütleri karşılaması gerekir:

    • Koleksiyon, kullanıcı kimliklerine göre anahtarlanmış olmalıdır. Yani koleksiyondaki her kullanıcı dokümanı için doküman kimliği, kullanıcının Firebase Authentication UID'si olmalıdır.
    • Her kullanıcı belgesinde, kullanıcının e-posta adresini içeren bir email alanı olmalıdır.
  5. İsteğe bağlı: Şablon koleksiyonu oluşturun.

    Handlebars şablonlarını kullanarak e-postaları oluşturabilirsiniz. Bunun için şablonlarınızı barındıracak bir Cloud Firestore koleksiyona ihtiyacınız vardır.

    Ayrıntılar için Tetikleyici E-posta uzantısıyla Handlebars şablonlarını kullanma bölümüne bakın.

Uzantıyı yükleme

Uzantıyı yüklemek için Firebase Extension yükleme sayfasındaki adımları uygulayın. Özet olarak, aşağıdakilerden birini yapın:

  • Firebase konsolu: Aşağıdaki düğmeyi tıklayın:

    Tetikleyici E-posta uzantısını yükleme

  • KSA: Aşağıdaki komutu çalıştırın:

    firebase ext:install firebase/firestore-send-email --project=projectId-or-alias

Uzantı yüklediğinizde SMTP bağlantı bilgilerinizi ve daha önce oluşturduğunuz Cloud Firestore koleksiyonlarını belirtmeniz istenir.

Uzantıyı kullanma

Bu uzantı, yüklendikten sonra yapılandırdığınız koleksiyona yapılan tüm doküman yazma işlemlerini izler. E-posta, belgenin alanlarının içeriğine göre gönderilir. Üst düzey alanlar, e-postanın gönderenini ve alıcılarını belirtir. message alanı, e-posta gövdesi de dahil olmak üzere gönderilecek e-postanın ayrıntılarını içerir.

Örnek: E-posta gönderme

Basit bir mesaj göndermek için mesajlar koleksiyonunuza bir to alanı ve aşağıdaki içeriği içeren bir message alanı içeren bir doküman ekleyin:

to: ['someone@example.com'],
message: {
  subject: 'Hello from Firebase!',
  text: 'This is the plaintext section of the email body.',
  html: 'This is the <code>HTML</code> section of the email body.',
}

Gönderen ve alıcı alanları

Dokümanın üst düzey alanları, e-posta gönderen ve alıcı bilgilerini sağlar. Kullanılabilir alanlar şunlardır:

  • from: Gönderenin e-posta adresi. Dokümanda belirtilmezse yapılandırılmış "Varsayılan GÖNDEREN adresi" parametresi kullanılır.
  • replyTo: Yanıtlama e-posta adresi. Dokümanda belirtilmezse yapılandırılmış "Varsayılan YANITLA adresi" parametresi kullanılır.
  • to: Tek bir alıcı e-posta adresi veya birden fazla alıcı e-posta adresi içeren bir dizi.
  • toUids: Alıcıların UID'lerini içeren bir dizi.
  • cc: Tek bir alıcı e-posta adresi veya birden fazla alıcı e-posta adresi içeren bir dizi.
  • ccUids: CC alıcısı UID'lerini içeren bir dizi.
  • bcc: Tek bir alıcı e-posta adresi veya birden fazla alıcı e-posta adresi içeren bir dizi.
  • bccUids: BCC alıcısı UID'lerini içeren bir dizi.
  • headers: Ek üstbilgi alanlarının bulunduğu bir nesne (örneğin, {"X-Custom-Header": "value", "X-Second-Custom-Header": "value"}).

NOT: toUids, ccUids ve bccUids seçenekleri, e-postaları bir Cloud Firestore belgesindeki e-posta adreslerine bağlı kullanıcı kimliklerine göre gönderir. Bu alıcı seçeneklerini kullanmak için uzantının "Kullanıcılar koleksiyonu" parametresi için bir Cloud Firestore koleksiyonu belirtmeniz gerekir. Ardından uzantı, toUids, ccUids ve/veya bccUids alanlarında belirtilen her UID için email alanını okuyabilir.

Mesaj alanı

Belgenin message alanında, e-postanın ham teslimat bilgileri yer alır. Bu alan genellikle yalnızca kendi sunucularınızda veya Cloud Functions'da çalışan güvenilir kod tarafından doldurulmalıdır (aşağıdaki "Güvenlik kuralları ve e-posta gönderme" bölümüne bakın).

message alanı için kullanılabilen özellikler şunlardır:

  • messageId: E-posta için bir ileti kimliği üstbilgisi (varsa).
  • subject: E-postanın konusu.
  • text: E-postanın düz metin içeriği.
  • html: E-postanın HTML içeriği.
  • amp: E-postanın AMP4EMAIL içeriği.
  • attachments: Ekler içeren bir dizi; desteklenen Nodemailer seçenekleri: utf-8 dizesi, özel içerik türü, URL, kodlanmış dize, veri URI'si ve önceden oluşturulmuş MIME düğümü (e-postanızın bulut sunucusunun dosya sistemine erişimi olmadığını unutmayın).

İleri düzey kullanım

Bu uzantının daha gelişmiş kullanımı hakkında bilgi edinin: