Email Sender
E-Mails versenden via globale Mutation _sendEmail.
Beschreibung
Die Mutation _sendEmail versendet E-Mails, indem sie die WordPress-Funktion wp_mail aufruft. Dadurch wird die in WordPress definierte Konfiguration für den E-Mail-Versand genutzt (z. B. welcher SMTP-Anbieter verwendet wird).
Die E-Mail kann mit den Inhaltstypen "text" oder "HTML" versendet werden, abhängig vom Wert des Inputs messageAs (ein "oneof"-InputObject, sodass jeweils nur eine seiner Eigenschaften angegeben werden kann).
Um als Text zu senden, gib die Eigenschaft messageAs.text an:
mutation {
_sendEmail(
input: {
to: "target@email.com"
subject: "Email with text content"
messageAs: {
text: "Hello world!"
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}Um als HTML zu senden, gib die Eigenschaft messageAs.html an:
mutation {
_sendEmail(
input: {
to: "target@email.com"
subject: "Email with HTML content"
messageAs: {
html: "<p>Hello world!</p>"
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}Globales Feld
_sendEmail ist ein globales Feld (oder genauer gesagt eine globale Mutation). Das bedeutet: Wenn Nested Mutations aktiviert sind, kann diese Mutation auf jedem Typ des GraphQL-Schemas ausgeführt werden (also nicht nur in MutationRoot).
Das ist nützlich, um eine Liste von Benutzern zu durchlaufen und jedem von ihnen eine E-Mail zu senden (in diesem Fall wird die Mutation im Typ User ausgelöst):
mutation {
users {
email
_sendEmail(
input: {
to: $__email
subject: "..."
messageAs: {
text: "..."
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}In Kombination mit Funktionen anderer Erweiterungen (hier: Field to Input und PHP Functions via Schema) lassen sich personalisierte Nachrichten für jeden Benutzer erstellen:
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
}
}
}
}
}Erforderliche Berechtigung
Die Mutation kann auf Benutzer mit einer bestimmten WordPress-Berechtigung eingeschränkt werden. Diese Einstellung wird auf der Einstellungsseite unter Plugin Configuration > Email Sender konfiguriert.

Standardmäßig ist manage_options eingestellt, damit Abonnenten die Mutation nicht zum Versenden von Spam an beliebige Empfänger missbrauchen können.
Wähle (any logged-in user), um die Berechtigungsprüfung zu deaktivieren.
Weitere Beispiele
Die folgende Query sendet eine E-Mail an den Administrator-Benutzer mit dem Inhalt eines Beitrags (z. B. kann sie ausgelöst werden, wenn ein neuer Beitrag veröffentlicht wird). Sie verwendet folgende Erweiterungen:
- Multiple Query Execution um die Query in logische Einheiten zu gliedern
- Helper Function Collection um die E-Mail-Nachricht mit Markdown zu verfassen und sie via
_strConvertMarkdownToHTMLin HTML umzuwandeln - PHP Functions via Schema um Werte dynamisch in Betreff und Nachricht der E-Mail einzufügen, über die Felder
_strReplaceMultipleund_sprintf - Field to Input um die E-Mail-Adresse des Administrators aus
wp_optionsabzurufen und bereitzustellen
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
}
}