Tetikleyici E-posta uzantısını kullanma

Tetikleyici E-posta uzantısı (firestore-send-email), Cloud Firestore koleksiyonundaki belgelere dayanarak otomatik olarak e-posta göndermenize olanak tanır. 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 destekleyen UID'ler) dahil olmak üzere e-postayı göndereni 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ı yüklemeden önce aşağıdaki adımları tamamlayın:

  1. Giden posta hizmetinizi ayarlayın.

    Trigger Email uzantısını yüklediğinizde, uzantının e-posta göndermek için kullandığı 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ı toplama işleminiz 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 farklılık gösterir ancak her zaman e-postaların yalnızca hedeflenen alıcılara gönderildiğinden ve serbest biçimli içeriğin en aza indirildiğinden emin olmalısınız. Şablonlar bu konuda yardımcı olabilir. Şablona doldurulan verilerin kullanıcının tetiklemesine izin verilmesi gerekenlere dair beklentilerinizi karşıladığını doğrulamak için güvenlik kurallarını kullanabilirsiniz.

  4. İsteğe bağlı: Bir 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 alanında bir kullanıcı veritabanınız varsa alıcıları kullanıcıların UID'lerini kullanarak 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ı: Bir ş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 teslim edilir. Üst düzey alanlar, e-postanın gönderenini ve alıcılarını belirtir. message alanında, e-posta gövdesi de dahil olmak üzere, teslim edilecek e-postanın ayrıntıları yer alır.

Ö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ının 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 başlık alanlarının bulunduğu 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 istiyorsanız uzantının "Kullanıcı koleksiyonu" parametresi için bir Cloud Firestore koleksiyonu belirtmeniz gerekir. Böylece 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-postanın 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: