Email Sender
Wysyłaj wiadomości e-mail za pomocą globalnej mutacji _sendEmail.
Opis
Mutacja _sendEmail wysyła wiadomości e-mail, wykonując funkcję WordPress wp_mail. W związku z tym będzie korzystać z konfiguracji zdefiniowanej do wysyłania e-maili w WordPress (np. dostawcy SMTP).
Wiadomość e-mail może być wysłana z typem treści "text" lub "HTML", w zależności od wartości parametru wejściowego messageAs (który jest InputObjectem "oneof", co oznacza, że można podać tylko jedną z jego właściwości).
Aby wysłać jako tekst, podaj właściwość messageAs.text:
mutation {
_sendEmail(
input: {
to: "target@email.com"
subject: "Email with text content"
messageAs: {
text: "Hello world!"
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}Aby wysłać jako HTML, podaj właściwość messageAs.html:
mutation {
_sendEmail(
input: {
to: "target@email.com"
subject: "Email with HTML content"
messageAs: {
html: "<p>Hello world!</p>"
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}Pole globalne
_sendEmail jest polem globalnym (a dokładniej, globalną mutacją). Oznacza to, że jeśli Nested Mutations są włączone, ta mutacja może być wykonana na dowolnym typie ze schematu GraphQL (tj. nie tylko w MutationRoot).
Jest to przydatne do iterowania listy użytkowników i wysyłania wiadomości e-mail do każdego z nich (w tym przypadku mutacja jest wywoływana w kontekście typu User):
mutation {
users {
email
_sendEmail(
input: {
to: $__email
subject: "..."
messageAs: {
text: "..."
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}W połączeniu z funkcjami innych rozszerzeń (w tym przypadku Field to Input i PHP Functions via Schema) możemy tworzyć spersonalizowane wiadomości dla każdego użytkownika:
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
}
}
}
}
}Wymagane uprawnienie
Mutacja może być ograniczona do użytkowników posiadających określone uprawnienie WordPress. To ustawienie jest konfigurowane na stronie Ustawień, w sekcji Plugin Configuration > Email Sender.

Domyślnie ustawione jest manage_options, aby subskrybenci nie mogli używać mutacji do wysyłania spamu do dowolnych odbiorców.
Wybierz (any logged-in user), aby wyłączyć sprawdzanie uprawnień.
Więcej przykładów
Poniższe zapytanie wysyła wiadomość e-mail do użytkownika administratora z treścią wpisu (np. może być wyzwalane za każdym razem, gdy nowy wpis zostanie opublikowany). Korzysta z rozszerzeń:
- Multiple Query Execution do organizowania zapytania w logiczne jednostki
- Helper Function Collection do tworzenia treści wiadomości e-mail przy użyciu Markdown i konwertowania jej na HTML za pomocą
_strConvertMarkdownToHTML - PHP Functions via Schema do dynamicznego wstawiania wartości do tematu i treści wiadomości e-mail za pomocą pól
_strReplaceMultiplei_sprintf - Field to Input do pobierania i przekazywania adresu e-mail administratora z
wp_options
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
}
}