Email Sender
Envie emails via a mutation global _sendEmail.
Descrição
A mutation _sendEmail envia emails executando a função wp_mail do WordPress. Como resultado, ela utilizará a configuração definida para o envio de emails no WordPress (como o provedor SMTP a ser utilizado).
O email pode ser enviado com os tipos de conteúdo "text" ou "HTML", dependendo do valor do input messageAs (que é um InputObject "oneof", de modo que apenas uma de suas propriedades pode ser fornecida).
Para enviar como texto, forneça a propriedade messageAs.text:
mutation {
_sendEmail(
input: {
to: "target@email.com"
subject: "Email with text content"
messageAs: {
text: "Hello world!"
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}Para enviar como HTML, forneça a propriedade 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
}
}
}
}Campo Global
_sendEmail é um campo global (ou, mais precisamente, uma mutation global). Isso significa que, se as Nested Mutations estiverem habilitadas, essa mutation pode ser executada em qualquer tipo do schema GraphQL (ou seja, não apenas em MutationRoot).
Isso é útil para iterar uma lista de usuários e enviar um email para cada um deles (neste caso, a mutation é acionada enquanto está no tipo User):
mutation {
users {
email
_sendEmail(
input: {
to: $__email
subject: "..."
messageAs: {
text: "..."
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}Combinado com recursos de outras extensões (neste caso, Field to Input e PHP Functions via Schema), podemos criar mensagens personalizadas para cada usuário:
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
}
}
}
}
}Capacidade necessária
A mutation pode ser restrita a usuários que possuem uma capacidade específica do WordPress. Essa configuração é definida na página de Configurações, em Plugin Configuration > Email Sender.

O padrão é manage_options para que assinantes não possam usar a mutation para enviar spam a destinatários arbitrários.
Selecione (any logged-in user) para desabilitar a verificação de capacidade.
Mais exemplos
A query abaixo envia um email ao usuário administrador com o conteúdo de um post (por exemplo: pode ser acionada sempre que um novo post for publicado). Ela utiliza as extensões:
- Multiple Query Execution para organizar a query em unidades lógicas
- Helper Function Collection para compor a mensagem do email usando Markdown e convertê-la em HTML via
_strConvertMarkdownToHTML - PHP Functions via Schema para injetar dinamicamente valores no assunto e na mensagem do email via os campos
_strReplaceMultiplee_sprintf - Field to Input para recuperar e fornecer o email do administrador a partir do
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
}
}