Enviando e-mails no Node.js? [fechadas]


291

Recentemente, comecei a programar meu primeiro node.js. No entanto, descobri que não consigo criar um formulário de contato que é enviado diretamente para o meu email, pois não consigo encontrar nenhum módulo do nó capaz de enviar emails.

Alguém conhece uma biblioteca de e-mail node.js. ou um exemplo de script de formulário de contato?


Saída: AWS-ses livres 62000 e-mails para aplicativos EC2.
Harvey

Respostas:


142

node-email-templates é uma opção muito melhor: https://github.com/niftylettuce/node-email-templates

tem suporte para windows também


1
Isso realmente ajuda os documentos a serem bastante auto-explicativos.
NycCompSci


7
isso porque seu nodemailer.com agora estou usando no meu projeto, funciona bem, o nodejitsu não teve problemas ao enviar e-mails através dos servidores smtp do gmail.
usar o seguinte código

2
Passei algumas horas nos últimos dois dias tentando entrar node-email-templatesem funcionamento. Quero apenas usá-lo como um objeto que inicializo e depois uso para enviar. Não consigo fazer funcionar. Desistindo.
Jcollum 01/07

O tutorial provou ser valioso (Nodejs Gamil OAuth2) masashi-k.blogspot.com.au/2013/06/…
eddyparkinson:

162

O Nodemailer é basicamente um módulo que permite enviar e-mails facilmente ao programar no Node.js. Existem alguns ótimos exemplos de como usar o módulo Nodemailer em http://www.nodemailer.com/ . As instruções completas sobre como instalar e usar a funcionalidade básica do Nodemailer estão incluídas neste link.

Pessoalmente, tive problemas para instalar o Nodemailer usando o npm, então apenas baixei a fonte. Existem instruções para instalar o npm e fazer o download da fonte.

Este é um módulo muito simples de usar e eu o recomendaria para quem quiser enviar e-mails usando o Node.js. Boa sorte!


2
nodemailer trabalhou primeiro!
quer

testei com SMTP e Amazon SES, trabalha para mim, o integrou no quadro ConnectedSets
Jean Vincent

simples, sem trabalho duro para configurá-lo. apenas copiei o código de exemplo, mudei para minhas informações (leia sobre SSL seguro) e funcionou. ótimo para remetente de e-mail simples!

É um projeto comercial agora, então esteja avisado.
Elliotrock 4/04

2
Esta resposta deve incluir um exemplo
Abraham TS

65

Confira o emailjs

Depois de perder muito tempo tentando fazer o nodemailer funcionar com anexos grandes, encontrou o emailjs e feliz desde então.

Ele suporta o envio de arquivos usando objetos File normais, e não buffers enormes, como o nodemailer exige. Significa que você pode vinculá-lo a, fe, formidável para passar os anexos de um formulário html para a mala direta. Ele também suporta filas.

No geral, não faço ideia por que o nodejitsu ppl escolheu o nodemailer para basear sua versão, o emailjs é apenas muito mais avançado.


3
Após um uso prolongado, foi necessário forçá-lo para solucionar um problema: a menos que dentro do processo de envio de mensagens, a coisa não processasse eventos de soquete e, portanto, parasse depois de algum tempo ocioso, pois o servidor fecharia a conexão, mas havia não havia nada para processar o evento e redefinir as variáveis ​​internas. Você pode encontrar a versão bifurcada aqui: https://github.com/silvioster/emailjs . Esta versão está funcionando de forma estável há bastante tempo, sem barracas.
silvio

18
atualizar para o comentário anterior, o autor original corrigiu esse bug e alguns outros também; portanto, o fork não é mais necessário. a versão mais recente deve estar em https://github.com/eleith/emailjs
silvio

1
nodemailer anexo suportes riachos também, não apenas "grandes buffers"
JoshuaDavid

57

Código completo para enviar email usando o módulo nodemailer

var mailer = require("nodemailer");

// Use Smtp Protocol to send Email
var smtpTransport = mailer.createTransport("SMTP",{
    service: "Gmail",
    auth: {
        user: "gmail_id@gmail.com",
        pass: "gmail_password"
    }
});

var mail = {
    from: "Yashwant Chavan <from@gmail.com>",
    to: "to@gmail.com",
    subject: "Send Email Using Node.js",
    text: "Node.js New world for me",
    html: "<b>Node.js New world for me</b>"
}

smtpTransport.sendMail(mail, function(error, response){
    if(error){
        console.log(error);
    }else{
        console.log("Message sent: " + response.message);
    }

    smtpTransport.close();
});

4
Eu achei Nodemailer muito mais fácil de usar do que node-email-templates. Talvez seja porque eu estava apenas tentando enviar email básico em texto sem formatação / html básico, mas achei node-email-templatesnecessário muito mais configuração, enquanto Nodemailerestava em funcionamento literalmente em 2 minutos.
JVG 09/04

4
Diferente do gmail? Como podemos configurar para o nosso próprio servidor smtp?
Balaji Boggaram Ramanarayan

1
Eu recebo este erro depois de compilar com Webpack: TypeError: Cannot create property 'mailer' on string 'SMTP' at new Mail. Fui para posts como este e depois esta página, mas ainda perdi.
user1063287

2
@ user1063287 Basta remover o parâmetro "SMTP"
Bojan Radivojevic Bomber

1
Só para você ficar sabendo, não é possível alterar o endereço de origem para nada além do seu próprio endereço de e-mail usado como autenticação. O Gmail força o endereço de origem para aquele para confirmar a autoridade do remetente.
Nicholas Mordecai

25

A resposta aceita do @ JimBastard parece estar desatualizada, dei uma olhada e essa biblioteca do mailer não foi tocada há mais de 7 meses, possui vários bugs listados e não está mais registrada na NPM.

O nodemailer certamente se parece com a melhor opção, no entanto, o URL fornecido em outras respostas neste segmento são 404'ing.

O nodemailer alega suporte a plugins fáceis no gmail, hotmail, etc. e também possui uma documentação realmente bonita.


9

Você sempre pode usar o AlphaMail ( divulgação: sou um dos desenvolvedores por trás dele ).

Basta instalar com o NPM :

npm install alphamail

Inscreva-se para uma conta AlphaMail. Obtenha um token e comece a enviar com o serviço AlphaMail.

var alphamail = require('alphamail');

var emailService = new alphamail.EmailService()
    .setServiceUrl('http://api.amail.io/v1/')
    .setApiToken('YOUR-ACCOUNT-API-TOKEN-HERE');

var person = {
    id: 1234,
    userName: "jdoe75",
    name: {
        first: "John",
        last: "Doe"
    },
    dateOfBirth: 1975
};

emailService.queue(new alphamail.EmailMessagePayload()
    .setProjectId(12345) // ID of your AlphaMail project (determines template, options, etc)
    .setSender(new alphamail.EmailContact("Sender Company Name", "from@example.com"))
    .setReceiver(new alphamail.EmailContact("John Doe", "to@example.org"))
    .setBodyObject(person) // Any serializable object
);

E na AlphaMail GUI ( Painel ), você poderá editar o modelo com os dados que enviou:

<html>
    <body>
        <b>Name:</b> <# payload.name.last " " payload.name.first #><br>
        <b>Date of Birth:</b> <# payload.dateOfBirth #><br>

        <# if (payload.id != null) { #>
            <a href="http://company.com/sign-up">Sign Up Free!</a>
        <# } else { #>
            <a href="http://company.com/login?username=<# urlencode(payload.userName) #>">Sign In</a>
        <# } #>
    </body>
</html>

Os modelos são escritos em Comlang , é uma linguagem de modelo simples projetada especificamente para e-mails.


12
Agora o Alphamail está oficialmente morto. Muito lamentável - comecei a usá-lo exatamente por causa deste post. Desejando aos desenvolvedores tudo de melhor em seu próximo empreendimento.
Masotime 10/05



3

O npm possui alguns pacotes, mas nenhum chegou a 1,0 ainda. Melhores escolhas de npm list mail:

email@0.2.2
mail@0.1.1
mailer@0.3.0


2

A campanha é uma solução abrangente para o envio de emails no Node e é fornecida com uma API muito simples.

Você instância assim.

var client = require('campaign')({
  from: 'you@gmail.com'
});

Para enviar e-mails, você pode usar o Mandrill , que é gratuito e incrível. Basta definir sua chave de API, assim:

process.env.MANDRILL_APIKEY = '<your api key>';

(se você quiser enviar e-mails usando outro provedor, verifique os documentos)

Então, quando você quiser enviar um email, faça o seguinte:

client.sendString('<p>{{something}}</p>', {
  to: ['someone@gmail.com', 'someone.else@gmail.com'],
  subject: 'Some Subject',
  preview': 'The first line',
  something: 'this is what replaces that thing in the template'
}, done);

O repositório GitHub possui uma documentação bastante extensa .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.