Mudar do SendGrid
Passe para o Mailroomly uma aplicação feita para o SendGrid sem a reescrever: a biblioteca do SendGrid, o handler de eventos e o handler de Inbound Parse ficam iguais, e só mudam o host da API e a chave.
O que se mantém
O Mailroomly fala a API Mail Send do SendGrid e os seus formatos de webhook:
- O endpoint.
POST /v3/mail/send, na raiz dehttps://app.mailroomly.com, aceita o pedido do SendGrid:personalizations(comto,cc,bcc,subject,substitutions,headersecustom_args),from,reply_tooureply_to_list,subject,content,attachments,headers,categories,custom_args,asm, o acompanhamento de aberturas e cliques, e o sandbox mode. Responde202com umX-Message-Id, e os erros na forma{"errors": [...]}do SendGrid. - A chave. A chave de API de uma aplicação vai em
Authorization: Bearer, onde estava a chave do SendGrid. - O email de marketing. Um pedido com
asmenvia email de marketing: o destinatário pode cancelar a subscrição, e<%asm_group_unsubscribe_raw_url%>passa a ser a ligação própria de cada destinatário para o fazer. Sem ele, o email é transacional. - O sandbox mode.
mail_settings.sandbox_modeverifica o pedido (os campos, os endereços, o domínio do remetente e a chave) e não envia nada. - O Event Webhook. Com o formato Compatível com SendGrid, os eventos chegam como os do SendGrid:
processed,dropped,delivered,deferred,bounce,open,click,spamreporteunsubscribe, com os seuscustom_argsecategory, e umsg_message_idque começa peloX-Message-Id. São assinados como o SendGrid os assina, por isso a verificação da assinatura do seu handler continua a funcionar com a chave de verificação da aplicação. - O Inbound Parse. O email que os seus endereços recebem chega no formulário do Inbound Parse do SendGrid, com os seus campos e anexos.
Todos os campos e eventos: SendGrid compatibility (em inglês).
Antes de começar
- Um domínio verificado. O domínio de envio da aplicação tem de estar verificado no Mailroomly (O seu próprio domínio). Os registos DNS do Mailroomly e os do SendGrid convivem, por isso ambos podem enviar pelo mesmo domínio durante a mudança.
- Um limite diário à medida. Uma conta nova envia para um número limitado de destinatários por dia até passar a conta de confiança. Consulte o Plano antes de mudar uma aplicação com muito envio e peça um limite maior se precisar (Confiança de envio).
- Os seus endereços bloqueados. As supressões do SendGrid (devoluções, queixas de spam, cancelamentos da subscrição, endereços inválidos) não passam sozinhas. Exporte-as do SendGrid e bloqueie-as em Atividade › Bloqueados › Bloquear um endereço, ou pela API, antes do primeiro envio (Bloqueados). Bloqueie as devoluções, as queixas e os endereços inválidos para todos os tipos de email, e os cancelamentos da subscrição para o marketing.
- O que o Mailroomly não faz. Os modelos dinâmicos por
template_id, os envios agendados (send_at,batch_id), os IP pools, as secções antigas, os rodapés e o subscription tracking são recusados com o motivo, nunca ignorados: prepare o conteúdo na aplicação e envie quando o email deve sair.
Passar uma aplicação
As aplicações mudam uma de cada vez. Aplicações › Mudar do SendGrid (também no Ctrl K) guia-o pelos três passos na aplicação web: ligar uma aplicação no formato do SendGrid, apontar a biblioteca do SendGrid para o Mailroomly e mudar os webhooks.
1. Criar a aplicação e a chave
Em Mudar do SendGrid, escolha Ligar uma aplicação em Ligue uma aplicação no formato do SendGrid. Indique o Nome da aplicação e escolha O que faz (Envio de email chega para a maioria das aplicações), depois A que emails acede esta chave? e Criar a aplicação e a chave. Os webhooks da aplicação já usam o formato Compatível com SendGrid.
A chave, que começa por mp_live_, substitui a chave de API do SendGrid. Só é mostrada uma vez: copie-a para o cofre de segredos da aplicação. Para a limitar aos domínios da aplicação ou a um tipo de email, crie outra chave na página da aplicação e revogue a primeira (Aplicações e chaves).
2. Apontar a biblioteca do SendGrid para o Mailroomly
Mude dois valores na configuração da aplicação: o host da API e a chave. O código que constrói e envia o email fica igual.
// Node
const client = require('@sendgrid/client')
const sgMail = require('@sendgrid/mail')
client.setApiKey(process.env.MAILROOMLY_API_KEY)
client.setDefaultRequest('baseUrl', 'https://app.mailroomly.com')
sgMail.setClient(client)
# Python
sg = SendGridAPIClient(api_key=os.environ["MAILROOMLY_API_KEY"], host="https://app.mailroomly.com")
As outras bibliotecas (PHP, Ruby, Go, Java e C#) têm a mesma definição: SendGrid's libraries (em inglês). Sem biblioteca, envie o mesmo pedido para https://app.mailroomly.com/v3/mail/send.
Confirme como a aplicação envia marketing: o email enviado com asm é de marketing, e o email sem ele é transacional. Uma chave limitada ao marketing envia marketing, diga o pedido o que disser.
3. Mudar os webhooks
Na página da aplicação, abra o passo Webhook:
- URL do webhook: o endpoint que recebia o Event Webhook do SendGrid.
- Formato do conteúdo: Compatível com SendGrid (o guia já o escolheu).
- Eventos a enviar: marque o que o endpoint trata: Aceite para envio, Não enviada (endereço inválido ou bloqueado), Entregue, Devolvida, Entrega atrasada, Aberta, Clicada, Queixa, Cancelou a subscrição e Mensagem recebida.
- Guardar alterações e depois Enviar um evento de teste, para ver o que o seu endpoint responde.
- Em Detalhes avançados, copie a Chave de verificação (Event Webhook assinado do SendGrid) para o seu handler de eventos, onde estava a chave de verificação do SendGrid.
Rodar segredo renova também a chave de verificação, de imediato: o seu handler só consegue verificar os eventos quando tiver a nova chave, por isso coloque-a lá logo depois de rodar. As entregas que recusar entretanto são repetidas.
Um único URL recebe todos os eventos que a aplicação escolhe e o email que os seus endereços recebem. O email recebido chega como formulário (multipart/form-data) e os eventos como lista JSON, por isso um só handler distingue-os. Se o seu handler de eventos e o de Inbound Parse estão em dois URLs, dê ao endereço que recebe o seu próprio URL do webhook de receção (passo 4) e desmarque aqui Mensagem recebida, para que o email recebido chegue só a esse URL. O URL não pode levar nome de utilizador e palavra-passe: confirme antes a assinatura (Webhooks).
4. Receber email, se a aplicação o fazia com o SendGrid
Para uma aplicação que recebia email pelo Inbound Parse do SendGrid:
- Passe o domínio a Envio e receção (O que este domínio faz, nas Definições), normalmente o mesmo subdomínio que a aplicação usava com o Inbound Parse, nunca um domínio cujo email está noutro serviço (Endereços e domínios).
- Crie o endereço que recebe e escolha a aplicação como Aplicação responsável. Indique um URL do webhook de receção se o seu handler de Inbound Parse tem um URL próprio. Os pedidos chegam no formulário do Inbound Parse, assinados com o segredo da aplicação em
X-Messaging-Signature. - Se o Inbound Parse recebia para qualquer endereço do subdomínio, torne esse endereço o Endereço geral do domínio: o endereço para onde cada email foi enviado está no campo
envelope. - Mude o registo MX do domínio para o valor indicado na página do domínio (Registos DNS) e espere até a página o mostrar em ordem. Baixe o tempo de vida do registo um dia antes, para poder voltar atrás depressa.
Definir a aplicação responsável ou o URL do webhook de receção de um endereço exige uma pessoa com sessão iniciada no Mailroomly: um agente não o pode fazer (Agentes de IA).
5. Testar
Envie um email a partir da aplicação com mail_settings.sandbox_mode ativo: a resposta é 200 e nada é enviado. Depois envie um a sério: a resposta é 202 com um X-Message-Id, e o email aparece na Atividade, de Enviado a Entregue. Enviar um teste como esta aplicação, na página da aplicação, envia-lhe um e mostra os eventos que o seu webhook recebeu (Enviar um email de teste). Para a receção, envie um email para o endereço: aparece na caixa de entrada, e as Entregas de webhooks mostram a entrega ao seu endpoint.
6. Acompanhar a Atividade
Nos primeiros dias, acompanhe:
- A Atividade: cada envio, com o trajeto e os eventos (A página de um envio). Bloqueados mostra os endereços para onde o Mailroomly não envia, e porquê.
- As Entregas de webhooks: as entregas que o seu endpoint não aceitou, para corrigir e reenviar.
- Os Avisos: devoluções, queixas, limites diários e webhooks falhados, cada um a dizer o que fazer.
Voltar atrás
Mantenha a conta do SendGrid, os registos DNS e os webhooks até a mudança estar concluída. Para voltar, reponha os dois valores, o host da API e a chave: a aplicação volta a enviar pelo SendGrid em poucos minutos. Para a receção, aponte de novo o registo MX para o SendGrid. O email já aceite pelo Mailroomly continua a ser enviado e fica na Atividade.
O que é diferente
| No Mailroomly | |
|---|---|
| Modelos | Os modelos dinâmicos por template_id são recusados: prepare o conteúdo na aplicação antes de enviar. |
| As outras APIs do SendGrid | As campanhas e os contactos de marketing, as supressões e os grupos de cancelamento, as estatísticas, o activity feed, os subutilizadores, a verificação de remetentes e a autenticação de domínios não são emulados. Use a REST API e a aplicação web (Atividade, Bloqueados, Endereços, Campanhas). |
| Remetentes | Qualquer endereço de um domínio verificado envia; não há remetentes individuais para verificar. |
| Cada personalization | É um email no Mailroomly, com a sua própria página na Atividade. Partilham o X-Message-Id do pedido. |
| Grupos de cancelamento | Um cancelamento da subscrição abrange todo o marketing da sua organização, não um grupo. |
| Ids | O X-Message-Id e os ids em sg_message_id são UUID. |
| Destinatários bloqueados | Ficam de fora do email, tal como o SendGrid os descarta, e são indicados num evento dropped. |
| Limites | 500 personalizations por pedido, 50 destinatários e 10 MB por email, 100 pedidos por segundo por chave. Um anexo que todas as personalizations partilham conta uma vez por cada uma: as personalizations de um pedido somam no máximo 50 MB. |
| Recusas | Um campo que o Mailroomly não suporta é 400 com o nome do campo; um domínio não verificado, uma chave fora do seu âmbito ou marketing não permitido é 403; o limite diário, ou o da própria chave, é 429 até à meia-noite UTC, tal como os emails do mês de um plano esgotados; uma chave errada ou em falta é 401. |
| Campos dos eventos | Sem ip, tls, attempt, pool, asm_group_id nem marketing_campaign_*. |
| Campos do Inbound Parse | Sem dkim, SPF, sender_ip nem pontuação de spam. |
| Repetição dos webhooks | As entregas que falham são repetidas durante cerca de 45 horas, depois ficam Falhada e podem ser reenviadas (Webhooks). Cada tentativa tem de terminar em 10 segundos: responda 2xx de imediato e faça o trabalho depois. |
A referência para programadores, campo a campo: SendGrid compatibility (em inglês).