Tutorial
Enviar os e-mails do WordPress com o Emailit
Envie os e-mails do WordPress, do WooCommerce e dos formulários de contato pelo SMTP do Emailit com o WP Mail SMTP ou com um pequeno plugin, usando uma chave de API como senha.
O WordPress envia redefinições de senha, pedidos do WooCommerce e mensagens de formulários de contato com wp_mail(), que por padrão usa a configuração de e-mail do servidor e muitas vezes cai no spam. Este guia envia esses e-mails pelo SMTP relay do Emailit, com o plugin WP Mail SMTP ou com algumas linhas de código.
Pré-requisitos
- Acesso de administrador ao seu site WordPress.
- Um domínio de envio verificado, por exemplo,
acme.com. O endereço From do seu site deve usá-lo. - Uma chave de API. Crie uma chave Sending Only restrita ao seu domínio, com um nome como
wordpress-acme, para que uma configuração de plugin vazada não possa ser usada para mais nada. - Até o seu workspace ter acesso de produção, você só pode enviar para os e-mails das contas dos membros do workspace. Teste com o seu próprio endereço.
Configurações de SMTP
Estes são os valores que você vai informar em qualquer plugin de SMTP:
| Configuração | Valor |
|---|---|
| Host SMTP | smtp.emailit.com |
| Criptografia | TLS (STARTTLS) |
| Porta SMTP | 587 |
| Autenticação | Ativada |
| Usuário SMTP | emailit |
| Senha SMTP | A sua chave de API (secret_…) |
| E-mail do remetente (From) | Um endereço no seu domínio verificado, por exemplo, hello@acme.com |
Se o seu host bloquear a porta 587, use 2525 ou 2587 com TLS, ou 465 com SSL. Consulte Configurações de SMTP.
Configurar o WP Mail SMTP
O WP Mail SMTP é um plugin gratuito que substitui o transporte de e-mail do WordPress. Outros plugins de SMTP, como o FluentSMTP ou o Post SMTP, usam as mesmas configurações com rótulos um pouco diferentes.
-
Instale o plugin. No WordPress, acesse Plugins > Add New, pesquise WP Mail SMTP e depois instale e ative o plugin. Se o assistente de configuração abrir, pule-o; você pode configurar tudo na página de configurações.
-
Defina o remetente. Abra as configurações do plugin. Em From Email, informe um endereço no seu domínio verificado e ative Force From Email, para que todos os plugins enviem desse endereço. Em From Name, informe o nome do seu site ou da sua empresa.
-
Escolha Other SMTP. Em Mailer, escolha Other SMTP.
-
Informe o servidor. Defina SMTP Host como
smtp.emailit.com, Encryption como TLS e SMTP Port como587. Deixe Auto TLS ativado. -
Informe as credenciais. Ative Authentication. Defina SMTP Username como
emailite SMTP Password como a sua chave de API. Salve as configurações. -
Envie um teste. Use a ferramenta Email Test do plugin para enviar uma mensagem para o seu próprio endereço. Ela aparece em Email APIEmails em poucos segundos.
Manter a chave fora do banco de dados
O WP Mail SMTP pode ler as configurações dele a partir de constantes, para que a chave de API fique no wp-config.php em vez de no banco de dados. Adicione estas linhas acima de /* That's all, stop editing! */:
define( 'WPMS_ON', true );
define( 'WPMS_MAILER', 'smtp' );
define( 'WPMS_SMTP_HOST', 'smtp.emailit.com' );
define( 'WPMS_SMTP_PORT', 587 );
define( 'WPMS_SSL', 'tls' );
define( 'WPMS_SMTP_AUTH', true );
define( 'WPMS_SMTP_AUTOTLS', true );
define( 'WPMS_SMTP_USER', 'emailit' );
define( 'WPMS_SMTP_PASS', 'secret_••••••••••••••••••••••••••••••••' );
define( 'WPMS_MAIL_FROM', 'hello@acme.com' );
define( 'WPMS_MAIL_FROM_FORCE', true );
define( 'WPMS_MAIL_FROM_NAME', 'Acme' );A página de configurações passa a mostrar esses valores como bloqueados. Consulte a documentação do plugin se um campo não pegar a constante dele.
Configurar sem plugin
Se você preferir não instalar um plugin, adicione um must-use plugin que configure o PHPMailer nativo do WordPress. Defina a chave no wp-config.php:
define( 'EMAILIT_API_KEY', 'secret_••••••••••••••••••••••••••••••••' );Depois, crie este arquivo:
<?php
/**
* Plugin Name: Emailit SMTP
* Description: Sends all WordPress email through the Emailit SMTP relay.
*/
add_action( 'phpmailer_init', function ( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.emailit.com';
$phpmailer->Port = 587;
$phpmailer->SMTPSecure = 'tls';
$phpmailer->SMTPAuth = true;
$phpmailer->Username = 'emailit';
$phpmailer->Password = EMAILIT_API_KEY;
} );
add_filter( 'wp_mail_from', fn () => 'hello@acme.com' );
add_filter( 'wp_mail_from_name', fn () => 'Acme' );Os arquivos em mu-plugins são carregados automaticamente e não podem ser desativados na tela de administração.
Receber webhooks
A maioria dos sites não precisa de webhooks. Se você quiser reagir a bounces ou reclamações, por exemplo, para marcar o endereço de um cliente do WooCommerce, registre uma rota REST e verifique a assinatura. Guarde o segredo de assinatura do webhook no wp-config.php como EMAILIT_WEBHOOK_SECRET:
<?php
add_action( 'rest_api_init', function () {
register_rest_route( 'emailit/v1', '/webhook', [
'methods' => 'POST',
'permission_callback' => '__return_true',
'callback' => function ( WP_REST_Request $request ) {
$payload = $request->get_body();
$timestamp = (string) $request->get_header( 'x-emailit-timestamp' );
$signature = (string) $request->get_header( 'x-emailit-signature' );
$expected = hash_hmac( 'sha256', $timestamp . '.' . $payload, EMAILIT_WEBHOOK_SECRET );
if ( abs( time() - (int) $timestamp ) > 300 || ! hash_equals( $expected, $signature ) ) {
return new WP_Error( 'invalid_signature', 'Invalid signature', [ 'status' => 401 ] );
}
foreach ( json_decode( $payload, true ) as $event ) {
if ( 'email.bounced' === $event['type'] ) {
// Flag $event['data']['object']['to'].
}
}
return new WP_REST_Response( null, 200 );
},
] );
} );Aponte o webhook para https://acme.com/wp-json/emailit/v1/webhook. A verificação da assinatura é o que protege a rota, então não a remova.
Dicas para produção
- Force o endereço From. O WooCommerce e os plugins de formulários de contato e de áreas de membros costumam definir o próprio remetente. Forçar um endereço From no seu domínio verificado evita os erros
530 From/Sender domain is not verified. - Confira os logs quando algo falhar. Email APILogs mostra cada login SMTP e cada mensagem com o código de status, filtrados por chave de API.
- Fique de olho nos seus limites. Por padrão, os workspaces novos podem enviar 2 e-mails por segundo e 5.000 por dia. Uma grande promoção no WooCommerce ou um plugin de newsletter pode atingir esse limite; consulte Limites para pedir mais.
- Não envie newsletters pelo wp_mail. Para e-mails de marketing para uma lista, use Campanhas, que cuidam dos links de descadastro e das listas de contatos para você.
Solução de problemas
| Sintoma | Causa | Solução |
|---|---|---|
535 Authentication failed |
A senha não é uma chave de API válida. | Cole a chave completa, incluindo secret_, e use emailit como usuário. |
530 From/Sender domain is not verified for this workspace |
O endereço From não está em um domínio verificado. | Defina e force um e-mail de remetente no seu domínio verificado. |
530 API key is restricted to sending domain |
A chave está restrita a outro domínio. | Use um endereço From no domínio da chave ou outra chave. |
| A conexão dá timeout | O seu host bloqueia a porta. | Tente a porta 2525 ou 2587 com TLS ou peça ao seu host para liberar o SMTP de saída. |
550 Unverified workspaces can only send to workspace members' account emails |
O workspace ainda não tem acesso de produção. | Solicite o acesso de produção. |
Para mais informações, consulte Solução de problemas de SMTP.