tabnews.com.br icon indicating copy to clipboard operation
tabnews.com.br copied to clipboard

"Componentizar" mensagens de email

Open silvaezequias opened this issue 2 years ago • 1 comments

Eu adicionei suporte para criar mensagens de email usando JSX apenas usando a biblioteca do React. Com isso dá pra organizar melhor as mensagens de email e customizar elas separadamente.

Como o HTML enviado vai ser por email, não é possível usar bibliotecas pra estilizar o HTML, somente o css padrão usado em componentes React. Exemplo:


const style = {
  text: {
    color: 'red',
    fontWeight: 'bold',
  } 
}

export function MeuComponente({ username }) {
  return (
    <p style={style.text}>
      Olá, {username}! <br />
    </p>
  );
}

Tutorial

Criar um novo componente

Para criar um componente de mensagem é exatamente igual um componente React.

// mail/components/MeuComponente/index.js

export function MeuComponente({ username }) {
  return (
    <p>
      Olá, {username}! <br />
    </p>
  );
}

Agora adicionar esse componente no Renderizador:

// mail/index.js

import ReactDOM from 'react-dom/server';
import { MeuComponente } from './components/MeuComponente/';

function Render(Component, props) {
  return ReactDOM.renderToString(
    <Component {...props} />
  );
};

export default {
  MeuComponente: function(props){
    return Render(MeuComponente, props);
  }
}

Pronto! Agora está pronto para ser usado em qualquer canto da aplicação

// message.test.js

import email from 'infra/email.js';
import Mail from 'mail';

email.send({
  from: 'Filipe Deschamps <[email protected]>',
  to: '[email protected]',
  subject: 'Essa é uma mensagem de teste.',
  html: Mail.MeuComponente({
    username: 'Guga Deschamps',
  }),
});

silvaezequias avatar Dec 03 '22 16:12 silvaezequias

@ezequiaslopesdasilva is attempting to deploy a commit to the TabNews Team on Vercel.

A member of the Team first needs to authorize it.

vercel[bot] avatar Dec 03 '22 16:12 vercel[bot]

Bom, como o PR está há mais de um ano parado, está com alguns conflitos, e meu comentário ficou sem respostas, estou fechando o PR para organizar o repositório. Caso alguém queira dar continuidade, sugiro criar uma nova branch a partir da main, para evitar conflitos, já implementando o que sugeri como melhoria na revisão do código.

Obrigado pelo PR @silvaezequias!

Rafatcb avatar Dec 31 '23 12:12 Rafatcb