Mengirim email di Node.js? [Tutup]

291

Saya baru-baru ini mulai memprogram node.js. pertama saya Namun, saya menemukan bahwa saya tidak dapat membuat formulir kontak saya yang mengirim langsung ke email saya karena saya tidak dapat menemukan modul dari node yang dapat mengirim email.

Apakah ada yang tahu perpustakaan email node.js atau contoh skrip formulir kontak?

NycCompSci
sumber
Checkout: AWS-SES gratis 62000 email untuk aplikasi ec2.
Harvey

Jawaban:

142

node-email-templates adalah pilihan yang jauh lebih baik: https://github.com/niftylettuce/node-email-templates

ia memiliki dukungan untuk windows juga

JimBastard
sumber
1
Ini sangat membantu dokumen cukup jelas.
NycCompSci
4
github.com/marak/node_mailer sudah tidak digunakan lagi. Harus menggunakan ini github.com/andris9/Nodemailer
user470370
7
itu karena nodemailer.com sekarang saya menggunakannya dalam proyek saya, berfungsi dengan baik, nodejitsu tidak memiliki masalah mengirim email melalui server smtp gmail.
jascha
2
Saya telah menghabiskan beberapa jam selama dua hari terakhir mencoba node-email-templatesbangun dan berlari. Saya hanya ingin menggunakannya sebagai objek yang saya inisialisasi dan kemudian digunakan untuk mengirim. Tidak bisa membuatnya bekerja. Menyerah.
jcollum
Tutorial terbukti bernilai (Nodejs Gamil OAuth2) masashi-k.blogspot.com.au/2013/06/…
eddyparkinson
162

Nodemailer pada dasarnya adalah modul yang memberi Anda kemampuan untuk dengan mudah mengirim email saat pemrograman di Node.js. Ada beberapa contoh hebat tentang bagaimana menggunakan modul Nodemailer di http://www.nodemailer.com/ . Instruksi lengkap tentang cara menginstal dan menggunakan fungsionalitas dasar Nodemailer termasuk dalam tautan ini.

Saya pribadi kesulitan menginstal Nodemailer menggunakan npm, jadi saya baru saja mengunduh sumbernya. Ada instruksi untuk menginstal dan mengunduh sumber npm.

Ini adalah modul yang sangat sederhana untuk digunakan dan saya akan merekomendasikan hal ini kepada siapa pun yang ingin mengirim email menggunakan Node.js. Semoga berhasil!

Eric Peterson
sumber
2
nodemailer bekerja pada awalnya!
Capy
mengujinya dengan SMTP dan Amazon SES, bekerja untuk saya, mengintegrasikannya ke dalam kerangka ConnectedSets
Jean Vincent
sederhana, tidak ada kerja keras untuk menyiapkannya. hanya menyalin kode contoh, diubah ke info saya (baca tentang SSL aman) dan itu hanya berfungsi. bagus untuk pengirim email sederhana!
Ini proyek komersial sekarang, jadi berhati-hatilah.
elliotrock
2
Jawaban ini harus mencakup contoh
Abraham TS
65

Periksa emailjs

Setelah membuang banyak waktu untuk mencoba membuat nodemailer berfungsi dengan lampiran besar, menemukan emailjs dan bahagia sejak saat itu.

Ini mendukung pengiriman file dengan menggunakan objek File normal, dan bukan buffer besar seperti yang diperlukan nodemailer. Berarti Anda dapat menautkannya ke, fe, tangguh untuk meneruskan lampiran dari formulir html ke mailer. Ini juga mendukung antrian ..

Semua dalam semua, tidak tahu mengapa ppl nodejitsu memilih nodemailer untuk mendasarkan versi mereka, emailjs hanya jauh lebih maju.

silvio
sumber
3
Setelah beberapa lama digunakan, harus bercabang untuk memperbaiki masalah: kecuali di dalam proses pengiriman surat, hal itu tidak akan memproses peristiwa soket, dan dengan demikian terhenti setelah beberapa saat menganggur, karena server akan menutup koneksi, tetapi ada tidak ada artinya untuk memproses acara dan mereset variabel internal. Anda dapat menemukan versi bercabang di sini: https://github.com/silvioster/emailjs . Versi ini telah bekerja stabil untuk waktu yang cukup lama sekarang tanpa warung.
silvio
18
perbarui ke komentar sebelumnya, penulis asli memperbaiki bug itu dan beberapa yang lain juga, jadi garpu tidak diperlukan lagi. versi terbaru harus di https://github.com/eleith/emailjs
silvio
1
nodemailer mendukung stream attachment juga, tidak hanya "buffer besar"
JoshuaDavid
57

Kode Lengkap untuk mengirim Email Menggunakan Modul nodemailer

var mailer = require("nodemailer");

// Use Smtp Protocol to send Email
var smtpTransport = mailer.createTransport("SMTP",{
    service: "Gmail",
    auth: {
        user: "[email protected]",
        pass: "gmail_password"
    }
});

var mail = {
    from: "Yashwant Chavan <[email protected]>",
    to: "[email protected]",
    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();
});
Vicky
sumber
4
Saya menemukan Nodemailer cara yang lebih mudah digunakan daripada node-email-templates. Mungkin itu karena saya hanya mencoba mengirim plaintext / email html dasar, tetapi saya menemukan node-email-templatescara yang lebih diperlukan untuk mengatur, sedangkan Nodemailersudah berjalan dan berjalan dalam 2 menit.
JVG
4
Selain gmail? Bagaimana kita dapat mengkonfigurasi untuk server smtp kita sendiri?
Balaji Boggaram Ramanarayan
1
Saya mendapatkan error ini setelah kompilasi dengan Webpack: TypeError: Cannot create property 'mailer' on string 'SMTP' at new Mail. Saya telah pergi ke posting seperti ini dan kemudian halaman ini tetapi masih hilang.
user1063287
2
@ user1063287 Cukup hapus parameter "SMTP"
Bojan Radivojevic Bomber
1
Agar Anda tahu, Anda tidak dapat mengubah alamat dari ke alamat selain alamat email Anda sendiri yang Anda gunakan sebagai otentikasi. Gmail memaksa alamat dari ke yang itu sehingga dapat mengkonfirmasi otoritas pengirim.
Nicholas Mordecai
25

@ JimBastard jawaban yang diterima tampaknya bertanggal, saya telah melihat dan bahwa mailer lib belum disentuh dalam lebih dari 7 bulan, memiliki beberapa bug yang terdaftar, dan tidak lagi terdaftar di npm.

nodemailer sepertinya merupakan pilihan terbaik, namun url yang disediakan di jawaban lain di utas ini semuanya 404.

nodemailer mengklaim mendukung plugin yang mudah ke gmail, hotmail, dll. dan juga memiliki dokumentasi yang sangat indah.

Dean Sebaliknya
sumber
9

Anda selalu dapat menggunakan AlphaMail ( pengungkapan: Saya salah satu pengembang di belakangnya ).

Cukup instal dengan NPM :

npm install alphamail

Mendaftar untuk akun AlphaMail. Dapatkan token, dan kemudian Anda dapat mulai mengirim dengan layanan 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", "[email protected]"))
    .setReceiver(new alphamail.EmailContact("John Doe", "[email protected]"))
    .setBodyObject(person) // Any serializable object
);

Dan di GUI ( Dasbor ) AlphaMail Anda akan dapat mengedit templat dengan data yang Anda kirim:

<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>

Template ditulis dalam Comlang , ini adalah bahasa template sederhana yang dirancang khusus untuk email.

Robin Orheden
sumber
12
Alphamail sekarang resmi mati. Sangat disayangkan - Saya mulai menggunakannya karena pos ini. Semoga para pengembang mendapatkan yang terbaik dalam usaha mereka berikutnya.
Masotime
3

npm memiliki beberapa paket, tetapi belum ada yang mencapai 1.0. Pilihan terbaik dari npm list mail:

email@0.2.2
mail@0.1.1
mailer@0.3.0
Ezku
sumber
2

kampanye adalah solusi komprehensif untuk mengirim email di Node, dan dilengkapi dengan API yang sangat sederhana.

Anda contohnya seperti ini.

var client = require('campaign')({
  from: '[email protected]'
});

Untuk mengirim email, Anda dapat menggunakan Mandrill , yang gratis dan mengagumkan. Cukup atur kunci API Anda, seperti ini:

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

(jika Anda ingin mengirim email menggunakan penyedia lain, periksa dokumen)

Kemudian, ketika Anda ingin mengirim email, Anda dapat melakukannya seperti ini:

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

Repo GitHub memiliki dokumentasi yang cukup luas .

bevacqua
sumber