Email Sender
_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.

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
_strConvertMarkdownToHTMLaracılığıyla HTML'e dönüştürmek için - PHP Functions via Schema —
_strReplaceMultipleve_sprintfalanları aracılığıyla e-posta konusuna ve mesajına dinamik olarak değer enjekte etmek için - Field to Input —
wp_optionskaynağı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
}
}