Şema Fonksiyonları
Şema FonksiyonlarıEmail Sender

Email Sender

Included in the “Power Extensions” bundle

_sendEmail global mutation'ı aracılığıyla e-posta gönderin.

Açıklama

_sendEmail mutation'ı, WordPress wp_mail fonksiyonunu çalıştırarak e-posta gönderir. Sonuç olarak, WordPress'te e-posta gönderimi için tanımlanmış yapılandırmayı (kullanılacak SMTP sağlayıcısı gibi) kullanır.

E-posta, messageAs girdisinin değerine bağlı olarak "text" veya "HTML" içerik türleriyle gönderilebilir (messageAs, yalnızca özelliklerinden birinin sağlanabildiği bir "oneof" InputObject'tir).

Metin olarak göndermek için messageAs.text özelliğini sağlayın:

mutation {
  _sendEmail(
    input: {
      to: "target@email.com"
      subject: "Email with text content"
      messageAs: {
        text: "Hello world!"
      }
    }
  ) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
  }
}

HTML olarak göndermek için messageAs.html özelliğini sağlayın:

mutation {
  _sendEmail(
    input: {
      to: "target@email.com"
      subject: "Email with HTML content"
      messageAs: {
        html: "<p>Hello world!</p>"
      }
    }
  ) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
  }
}

Global Alan

_sendEmail bir global alandır (ya da daha doğrusu, bir global mutation'dır). Bu, Nested Mutations etkinleştirildiğinde bu mutation'ın GraphQL şemasındaki herhangi bir tür üzerinde çalıştırılabileceği anlamına gelir (yani yalnızca MutationRoot içinde değil).

Bu, bir kullanıcı listesi üzerinde yineleme yaparken her birine e-posta göndermek için kullanışlıdır (bu durumda mutation, User türündeyken tetiklenir):

mutation {
  users {
    email
    _sendEmail(
      input: {
        to: $__email
        subject: "..."
        messageAs: {
          text: "..."
        }
      }
    ) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
  }
}

Diğer eklentilerin özellikleriyle birleştirildiğinde (bu durumda Field to Input ve PHP Functions via Schema), her kullanıcı için kişiselleştirilmiş mesajlar oluşturabiliriz:

mutation {
  users {
    email
    displayName
    remainingCredits: metaValue(key: "credits")
    emailMessage: _sprintf(
      string: """
      <p>Hello %s!</p>
      <p>Your have <strong>%s remaining credits</strong> in your account.</p>
      <p><a href="%s">Buy more?</a></p>
      """,
      values: [
        $__displayName,
        $__remainingCredits,
        "https://mysite.com/buy-credits"
      ]
    )
    _sendEmail(
      input: {
        to: $__email
        subject: "Remaining credits"
        messageAs: {
          html: $__emailMessage
        }
      }
    ) {
      status
      errors {
        __typename
        ...on ErrorPayload {
          message
        }
      }
    }
  }
}

Gerekli Yetenek

Mutation, belirli bir WordPress yeteneğine sahip kullanıcılarla sınırlandırılabilir. Bu ayar, Ayarlar sayfasında Plugin Configuration > Email Sender altında yapılandırılır.

Email Sender için gerekli yeteneği ayarlama
Email Sender için gerekli yeteneği ayarlama

Varsayılan olarak manage_options şeklindedir; böylece aboneler mutation'ı kullanarak rastgele alıcılara spam gönderemez.

Yetenek denetimini devre dışı bırakmak için (any logged-in user) seçeneğini belirleyin.

Daha Fazla Örnek

Aşağıdaki query, yönetici kullanıcıya bazı gönderi içeriklerini içeren bir e-posta gönderir (örneğin: yeni bir gönderi yayımlandığında tetiklenebilir). Şu eklentileri kullanır:

  • Multiple Query Execution — queries'i mantıksal birimlere ayırmak için
  • Helper Function Collection — Markdown kullanarak e-posta mesajını oluşturmak ve _strConvertMarkdownToHTML aracılığıyla HTML'e dönüştürmek için
  • PHP Functions via Schema_strReplaceMultiple ve _sprintf alanları aracılığıyla e-posta konusuna ve mesajına dinamik olarak değer enjekte etmek için
  • Field to Inputwp_options kaynağından yöneticinin e-posta adresini almak ve sağlamak için
query GetPostData($postID: ID!) {
  post(by: {id: $postID}) {
    title @export(as: "postTitle")
    excerpt @export(as: "postExcerpt")
    url @export(as: "postLink")
    author {
      name @export(as: "postAuthorName")
      url @export(as: "postAuthorLink")
    }
  }
}
 
query GetEmailData @depends(on: "GetPostData") {
  emailMessageTemplate: _strConvertMarkdownToHTML(
    text: """
 
There is a new post by [{$postAuthorName}]({$postAuthorLink}):
 
**{$postTitle}**: {$postExcerpt}
 
[Read online]({$postLink})
 
    """
  )
  emailMessage: _strReplaceMultiple(
    search: ["{$postAuthorName}", "{$postAuthorLink}", "{$postTitle}", "{$postExcerpt}", "{$postLink}"],
    replaceWith: [$postAuthorName, $postAuthorLink, $postTitle, $postExcerpt, $postLink],
    in: $__emailMessageTemplate
  )
    @export(as: "emailMessage")
  subject: _sprintf(string: "New post created by %s", values: [$postAuthorName])
    @export(as: "emailSubject")
}
 
mutation SendEmail @depends(on: "GetEmailData") {
  adminEmail: optionValue(name: "admin_email")
  _sendEmail(
    input: {
      to: $__adminEmail
      subject: $emailSubject
      messageAs: {
        html: $emailMessage
      }
    }
  ) {
    status
  }
}