Biblioteca de queriesEnviar um email para assinantes notificando sobre um novo post
Enviar um email para assinantes notificando sobre um novo post
Esta query envia um email para todos os usuários, notificando sobre a criação de um novo post no site.
Inclui a possibilidade de selecionar usuários que se inscreveram em uma lista de emails, porém essa parte da query está comentada. (Descomente se necessário.) Os usuários inscritos são aqueles com o meta email_list com valor new_posts.
Esta query requer que o endpoint tenha as Mutations Aninhadas habilitadas.
query GetPostAndExportData($postId: ID!) {
post(by: { id: $postId }) {
content @export(as: "postContent")
title @export(as: "postTitle")
url @export(as: "postURL")
}
hasPost: _notNull(value: $__post)
@export(as: "doSendEmail")
}
query GetEmailData
@depends(on: "GetPostAndExportData")
@include(if: $doSendEmail)
{
siteName: optionValue(name: "blogname")
@export(as: "siteName")
emailSubject: _sprintf(
string: "There is a new post: \"%s\"",
values: [$postTitle]
)
@export(as: "emailSubject")
}
mutation SendEmailToUsersAboutNewPost
@depends(on: "GetEmailData")
@include(if: $doSendEmail)
{
users
# # Retrieve only users subscribed to an email list (uncomment if needed)
# (
# filter: {
# metaQuery: {
# key: "email_list",
# compareBy: {
# arrayValue: {
# value: "new_posts",
# operator: IN
# }
# }
# }
# }
# )
{
displayName
email
emailMessageTemplate: _strConvertMarkdownToHTML(
text: """
Hi {$userDisplayName},
There is a new post on the **{$siteName}** website:
[**{$postTitle}**]({$postURL})
{$postContent}
"""
)
@remove
emailMessage: _strReplaceMultiple(
search: ["{$userDisplayName}", "{$siteName}", "{$postTitle}", "{$postContent}", "{$postURL}"],
replaceWith: [$__displayName, $siteName, $postTitle, $postContent, $postURL],
in: $__emailMessageTemplate
)
@remove
_sendEmail(
input: {
to: $__email
subject: $emailSubject
messageAs: {
html: $__emailMessage
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}
}