กำลังส่งอีเมลใน Node.js หรือไม่ [ปิด]


291

ฉันเพิ่งเริ่มเขียนโปรแกรมโหนดแรกของฉัน อย่างไรก็ตามฉันค้นพบว่าฉันไม่สามารถสร้างฟอร์มติดต่อฉันที่ส่งตรงไปยังอีเมลของฉันเนื่องจากฉันไม่พบโมดูลใด ๆ จากโหนดที่สามารถส่งอีเมลได้

ไม่มีใครรู้เกี่ยวกับห้องสมุดอีเมล node.js หรือตัวอย่างแบบฟอร์มการติดต่อสคริปต์?


ชำระเงิน: AWS-SESฟรี 62,000 อีเมลสำหรับแอป ec2
ฮาร์วีย์

คำตอบ:


142

node-email-templates เป็นตัวเลือกที่ดีกว่า: https://github.com/niftylettuce/node-email-templates

มันรองรับ windows ด้วยเช่นกัน


1
สิ่งนี้จะช่วยให้เอกสารอธิบายได้ด้วยตนเอง
NycCompSci

4
github.com/marak/node_mailerเลิกใช้แล้ว ควรใช้github.com/andris9/Nodemailer
user470370

7
นั่นเป็นเพราะnodemailer.comตอนนี้ฉันใช้มันในโครงการของฉันทำงานได้ดี nodejitsu ไม่มีปัญหาในการส่งจดหมายผ่านเซิร์ฟเวอร์ smtp ของ gmail
jascha

2
ฉันใช้เวลาสองสามชั่วโมงในช่วงสองวันที่ผ่านมาพยายามลุกnode-email-templatesขึ้นวิ่ง ฉันต้องการเพียงแค่ใช้มันเป็นวัตถุที่ฉันเริ่มต้นและจากนั้นใช้ในการส่ง ไม่สามารถใช้งานได้ ยอมแพ้.
jcollum

บทพิสูจน์ได้รับการพิสูจน์แล้วว่ามีค่า (Nodejs Gamil OAuth2) masashi-k.blogspot.com.au/2013/06//
eddyparkinson

162

Nodemailer นั้นเป็นโมดูลที่ให้ความสามารถในการส่งอีเมลได้อย่างง่ายดายเมื่อเขียนโปรแกรมใน Node.js มีบางตัวอย่างที่ดีของวิธีการใช้โมดูล Nodemailer ที่มีhttp://www.nodemailer.com/ คำแนะนำแบบเต็มเกี่ยวกับวิธีการติดตั้งและใช้งานฟังก์ชันพื้นฐานของ Nodemailer รวมอยู่ในลิงค์นี้

ฉันมีปัญหาในการติดตั้ง Nodemailer โดยใช้ NPM ดังนั้นฉันเพิ่งดาวน์โหลดแหล่งที่มา มีคำแนะนำสำหรับทั้งการติดตั้ง npm และการดาวน์โหลดซอร์ส

นี่เป็นโมดูลที่ใช้ง่ายมากและฉันอยากจะแนะนำให้ทุกคนที่ต้องการส่งอีเมลโดยใช้ Node.js โชคดี!


2
nodemailer ทำงานในตอนแรก!
Capy

ทดสอบกับทั้ง SMTP และ Amazon SES ใช้งานได้สำหรับฉันรวมเข้ากับเฟรมเวิร์ก ConnectedSets
Jean Vincent

ง่ายไม่ยากสำหรับการติดตั้ง เพิ่งคัดลอกโค้ดตัวอย่างเปลี่ยนเป็นข้อมูลของฉัน (อ่านเกี่ยวกับความปลอดภัย SSL) และใช้งานได้ ยอดเยี่ยมสำหรับผู้ส่งอีเมลแบบง่าย!

มันเป็นโครงการเชิงพาณิชย์ในขณะนี้ดังนั้นจึงควรได้รับการเตือน
elliotrock

2
คำตอบนี้ควรรวมถึงตัวอย่าง
Abraham TS

65

ตรวจสอบemailjs

หลังจากเสียเวลามากมายในการพยายามทำให้ nodemailer ทำงานกับไฟล์แนบขนาดใหญ่พบอีเมลและมีความสุขนับตั้งแต่

รองรับการส่งไฟล์โดยใช้ออบเจ็กต์ไฟล์ปกติและไม่ต้องการบัฟเฟอร์ขนาดใหญ่ตามต้องการ หมายความว่าคุณสามารถเชื่อมโยงไปยัง fe ที่น่ากลัวเพื่อส่งไฟล์แนบจากแบบฟอร์ม html ไปยังจดหมาย นอกจากนี้ยังรองรับการเข้าคิว ..

โดยสรุปแล้ว nodejitsu ppl ไม่เลือก nodemailer เพื่ออ้างอิงเวอร์ชันของพวกเขา emailjs นั้นล้ำหน้ากว่ามาก


3
หลังจากใช้งานไปนาน ๆ ต้องแยกมันเพื่อแก้ไขปัญหา: ยกเว้นในกระบวนการส่งจดหมายสิ่งที่จะไม่ประมวลผลเหตุการณ์ซ็อกเก็ตและจนตรอกหลังจากเวลาไม่ได้ใช้งานเป็นเซิร์ฟเวอร์จะปิดการเชื่อมต่อ แต่มี ไม่มีอะไรที่จะประมวลผลเหตุการณ์และรีเซ็ตตัวแปรภายใน คุณสามารถค้นหารุ่นง่ามที่นี่: https://github.com/silvioster/emailjs รุ่นนี้ทำงานได้เสถียรมานานแล้วโดยไม่มีแผงลอย
silvio

18
อัปเดตเป็นความคิดเห็นก่อนหน้านี้ผู้แต่งดั้งเดิมแก้ไขข้อบกพร่องและที่อื่น ๆ ด้วยดังนั้นจึงไม่จำเป็นต้องใช้ส้อมอีกต่อไป รุ่นใหม่ล่าสุดควรอยู่บนhttps://github.com/eleith/emailjs
silvio

1
nodemailer รองรับกระแสไฟล์แนบเช่นกันไม่เพียง "บัฟเฟอร์ขนาดใหญ่"
JoshuaDavid

57

กรอกรหัสเพื่อส่งอีเมลโดยใช้โมดูล 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
ผมพบว่าNodemailer วิธีที่node-email-templatesง่ายต่อการใช้งานมากกว่า อาจเป็นเพราะฉันแค่พยายามส่งข้อความธรรมดาพื้นฐาน / html อีเมลธรรมดา แต่ฉันพบว่าnode-email-templatesจำเป็นต้องมีวิธีการตั้งค่าที่มากกว่าในขณะที่Nodemailerใช้งานได้ใน 2 นาที
JVG

4
นอกเหนือจาก Gmail หรือไม่ เราจะกำหนดค่าสำหรับเซิร์ฟเวอร์ smtp ของเราเองได้อย่างไร?
Balaji Boggaram Ramanarayan

1
ฉันได้รับข้อผิดพลาดนี้หลังจากรวบรวมกับ TypeError: Cannot create property 'mailer' on string 'SMTP' at new Mailwebpack: ฉันไปที่โพสต์แบบนี้แล้วหน้านี้แต่ก็ยังหายไป
user1063287

2
@ user1063287 เพียงแค่ลบพารามิเตอร์ "SMTP"
Bojan Radivojevic Bomber

1
เพื่อให้คุณทราบคุณไม่สามารถเปลี่ยนจากที่อยู่เป็นสิ่งอื่นนอกเหนือจากที่อยู่อีเมลของคุณที่คุณใช้เป็นการรับรองความถูกต้อง Gmail บังคับให้ที่อยู่จากที่หนึ่งไปยังที่อยู่นั้นสามารถยืนยันสิทธิ์ของผู้ส่งได้
Nicholas Mordecai

25

@ JimBastard คำตอบที่ยอมรับดูเหมือนว่าจะเป็นวันที่ฉันมีลักษณะและ lib mailer ที่ไม่ได้สัมผัสใน 7 เดือนมีข้อบกพร่องหลายรายการและไม่ได้ลงทะเบียนใน NPM

nodemailerดูเหมือนจะเป็นตัวเลือกที่ดีที่สุด แต่ URL ที่ให้ไว้ในคำตอบอื่น ๆ ในกระทู้นี้มีทั้งหมด 404 รายการ

nodemailer อ้างว่าสนับสนุนปลั๊กอินง่าย ๆ ใน gmail, hotmail เป็นต้นและยังมีเอกสารที่สวยงามมาก


9

คุณสามารถใช้AlphaMailได้ตลอดเวลา( การเปิดเผย: ฉันเป็นหนึ่งในนักพัฒนาที่อยู่เบื้องหลัง )

เพียงติดตั้งด้วยNPM :

npm install alphamail

ลงทะเบียนสำหรับบัญชี AlphaMail รับโทเค็นแล้วคุณสามารถเริ่มส่งด้วยบริการ 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
);

และใน AlphaMail GUI ( Dashboard ) คุณจะสามารถแก้ไขเทมเพลตด้วยข้อมูลที่คุณส่ง:

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

เทมเพลตนั้นเขียนด้วยภาษาComlangเป็นภาษาแม่แบบง่าย ๆ ที่ออกแบบมาโดยเฉพาะสำหรับอีเมล


12
ตอนนี้ Alphamail ตายอย่างเป็นทางการแล้ว โชคร้ายมาก - ฉันเริ่มใช้มันอย่างแน่นอนเพราะโพสต์นี้ ขออวยพรให้นักพัฒนาที่ดีที่สุดในการลงทุนครั้งต่อไปของพวกเขา
masotime



3

npmมีแพ็คเกจไม่กี่แพ็คเกจ แต่ยังไม่ถึง 1.0 ตัวเลือกที่ดีที่สุดจากnpm list mail:

email@0.2.2
mail@0.1.1
mailer@0.3.0


2

แคมเปญเป็นโซลูชันที่ครอบคลุมสำหรับการส่งอีเมลในโหนดและมาพร้อมกับ API ที่ง่ายมาก

คุณอินสแตนซ์มันเช่นนี้

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

ในการส่งอีเมลคุณสามารถใช้Mandrillซึ่งฟรีและยอดเยี่ยม เพียงตั้งค่าคีย์ API ของคุณเช่นนี้:

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

(ถ้าคุณต้องการส่งอีเมลโดยใช้ผู้ให้บริการรายอื่นให้ตรวจสอบเอกสาร)

จากนั้นเมื่อคุณต้องการส่งอีเมลคุณสามารถทำสิ่งนี้ได้:

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

GitHub repo มีเอกสารมากมายสวย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.