Email Sender
Envoie des e-mails via la mutation globale _sendEmail.
Description
La mutation _sendEmail envoie des e-mails en exécutant la fonction wp_mail de WordPress. Par conséquent, elle utilisera la configuration définie pour l'envoi d'e-mails dans WordPress (comme le fournisseur SMTP à utiliser).
L'e-mail peut ĂȘtre envoyĂ© avec les types de contenu "text" ou "HTML", selon la valeur de l'entrĂ©e messageAs (qui est un InputObject "oneof", de sorte qu'une seule de ses propriĂ©tĂ©s peut ĂȘtre fournie).
Pour envoyer en texte, fournissez la propriété messageAs.text :
mutation {
_sendEmail(
input: {
to: "target@email.com"
subject: "Email with text content"
messageAs: {
text: "Hello world!"
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}Pour envoyer en HTML, fournissez la propriété 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
}
}
}
}Champ Global
_sendEmail est un champ global (ou, plus prĂ©cisĂ©ment, une mutation globale). Cela signifie que, si les Nested Mutations sont activĂ©es, cette mutation peut ĂȘtre exĂ©cutĂ©e sur n'importe quel type du schĂ©ma GraphQL (c'est-Ă -dire pas seulement dans MutationRoot).
Ceci est utile pour itérer une liste d'utilisateurs et envoyer un e-mail à chacun d'eux (dans ce cas, la mutation est déclenchée depuis le type User) :
mutation {
users {
email
_sendEmail(
input: {
to: $__email
subject: "..."
messageAs: {
text: "..."
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}Combiné avec des fonctionnalités d'autres extensions (dans ce cas, Field to Input et PHP Functions via Schema), nous pouvons créer des messages personnalisés pour chaque utilisateur :
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
}
}
}
}
}Capacité requise
La mutation peut ĂȘtre restreinte aux utilisateurs possĂ©dant une capacitĂ© WordPress spĂ©cifique. Ce paramĂštre est configurĂ© sur la page des RĂ©glages, sous Plugin Configuration > Email Sender.

La valeur par défaut est manage_options afin que les abonnés ne puissent pas utiliser la mutation pour envoyer du spam à des destinataires arbitraires.
Sélectionnez (any logged-in user) pour désactiver la vérification de capacité.
Autres exemples
La requĂȘte ci-dessous envoie un e-mail Ă l'utilisateur administrateur avec le contenu d'un article (par exemple : elle peut ĂȘtre dĂ©clenchĂ©e chaque fois qu'un nouvel article est publiĂ©). Elle utilise les extensions :
- Multiple Query Execution pour organiser la requĂȘte en unitĂ©s logiques
- Helper Function Collection pour composer le message de l'e-mail en Markdown et le convertir en HTML via
_strConvertMarkdownToHTML - PHP Functions via Schema pour injecter dynamiquement des valeurs dans le sujet et le message de l'e-mail via les champs
_strReplaceMultipleet_sprintf - Field to Input pour récupérer et fournir l'adresse e-mail de l'administrateur depuis
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
}
}