Gửi email trong Node.js? [đóng cửa]


291

Gần đây tôi đã bắt đầu lập trình node.js đầu tiên của mình. Tuy nhiên, tôi phát hiện ra rằng tôi không thể tạo biểu mẫu liên hệ gửi thẳng đến email của mình vì tôi không thể tìm thấy bất kỳ mô-đun nào từ nút có thể gửi email.

Có ai biết về thư viện email node.js hoặc tập lệnh biểu mẫu liên hệ mẫu không?


Thanh toán: AWS-SES miễn phí 62000 email cho các ứng dụng ec2.
Harvey

Câu trả lời:


142

nút-email-mẫu là một tùy chọn tốt hơn nhiều: https://github.com/niftylettuce/node-email-tem mẫu

nó cũng hỗ trợ cho windows


1
Điều này thực sự giúp các tài liệu khá tự giải thích.
NycCompSci

4
github.com/marak/node_mailer không được dùng nữa. Nên sử dụng github.com/andris9/Nodemailer
user470370

7
Đó là bởi vì cái gật đầu của nó bây giờ tôi đang sử dụng nó trong dự án của tôi, hoạt động tốt, nodejitsu không gặp vấn đề gì khi gửi thư qua máy chủ smtp của gmail.
jascha

2
Tôi đã dành vài giờ trong hai ngày qua để cố gắng đứng node-email-templatesdậy và chạy. Tôi muốn chỉ sử dụng nó như một đối tượng mà tôi khởi tạo và sau đó sử dụng để gửi. Không thể làm cho nó hoạt động. Từ bỏ.
jcollum

Hướng dẫn tỏ ra có giá trị (Nodejs Gamil OAuth2) masashi-k.blogspot.com.au/2013/06/ mẹo
eddyparkinson

162

Nodemailer về cơ bản là một mô-đun cung cấp cho bạn khả năng dễ dàng gửi email khi lập trình trong Node.js. Có một số ví dụ tuyệt vời về cách sử dụng mô-đun Nodemailer tại http://www.nodemailer.com/ . Các hướng dẫn đầy đủ về cách cài đặt và sử dụng chức năng cơ bản của Nodemailer được bao gồm trong liên kết này.

Cá nhân tôi đã gặp sự cố khi cài đặt Nodemailer bằng npm, vì vậy tôi mới tải xuống nguồn. Có hướng dẫn cho cả cài đặt npm và tải xuống nguồn.

Đây là một mô-đun rất đơn giản để sử dụng và tôi muốn giới thiệu nó cho bất kỳ ai muốn gửi email bằng Node.js. Chúc may mắn!


2
gật đầu làm việc lúc đầu!
Capy

đã thử nghiệm nó với cả SMTP và Amazon SES, hoạt động với tôi, tích hợp nó vào khung ConnectedSets
Jean Vincent

đơn giản, không có công việc khó khăn để thiết lập nó. chỉ cần sao chép mã ví dụ, thay đổi thông tin của tôi (đọc về bảo mật SSL) và nó chỉ hoạt động. tuyệt vời cho người gửi email đơn giản!

Đây là một dự án thương mại, vì vậy được cảnh báo.
elliotrock

2
Câu trả lời này phải bao gồm một ví dụ
Abraham TS

65

Kiểm tra emailjs

Sau khi lãng phí rất nhiều thời gian vào việc cố gắng làm cho cái gật đầu hoạt động với các tệp đính kèm lớn, đã tìm thấy emailjs và hạnh phúc kể từ đó.

Nó hỗ trợ gửi các tệp bằng cách sử dụng các đối tượng Tệp thông thường và không phải là Bộ đệm lớn như yêu cầu. Có nghĩa là bạn có thể liên kết nó với, có thể ghê gớm để chuyển các tệp đính kèm từ một biểu mẫu html đến người gửi thư. Nó cũng hỗ trợ xếp hàng ..

Nói chung, không có lý do tại sao nodejitsu ppl lại chọn gật đầu để dựa trên phiên bản của họ, emailjs tiên tiến hơn nhiều.


3
Sau một thời gian sử dụng kéo dài, phải xử lý sự cố để khắc phục sự cố: trừ khi bên trong quá trình gửi thư, sự việc sẽ không xử lý các sự kiện ổ cắm và do đó bị đình trệ sau một thời gian không hoạt động, vì máy chủ sẽ đóng kết nối, nhưng ở đó không có gì để xử lý sự kiện và đặt lại các biến nội bộ. Bạn có thể tìm thấy phiên bản rẽ nhánh ở đây: https://github.com/silvioster/emailjs . Phiên bản này đã hoạt động ổn định trong một thời gian dài bây giờ không có quầy hàng.
silvio

18
cập nhật lên bình luận trước đó, tác giả ban đầu đã sửa lỗi đó và một số người khác cũng vậy, vì vậy không cần thêm fork nữa. phiên bản mới nhất sẽ có trên https://github.com/eleith/emailjs
silvio

1
gật đầu cũng hỗ trợ các luồng đính kèm, không chỉ là "Bộ đệm khổng lồ"
JoshuaDavid

57

Hoàn thành mã để gửi email bằng mô-đun gật đầu

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
Tôi thấy Nodemailer cách dễ sử dụng hơn node-email-templates. Có thể đó là vì tôi chỉ đang cố gắng gửi email html đơn / cơ bản, nhưng tôi thấy node-email-templatescách thiết lập cần thiết hơn, trong khi đó Nodemailerchỉ hoạt động trong 2 phút.
JVG

4
Khác với gmail? Làm thế nào chúng ta có thể cấu hình cho máy chủ smtp của chúng ta?
Balaji Boggaram Ramanarayan

1
Tôi gặp lỗi này sau khi biên dịch với webpack : TypeError: Cannot create property 'mailer' on string 'SMTP' at new Mail. Tôi đã đi đến bài viết như thế này và sau đó trang này nhưng vẫn bị mất.
dùng1063287

2
@ user1063287 Chỉ cần xóa tham số "SMTP"
Máy bay ném bom Bojan Radivojevic

1
Để bạn biết, bạn không thể thay đổi địa chỉ từ địa chỉ này sang địa chỉ khác ngoài địa chỉ email của chính bạn mà bạn đã sử dụng làm xác thực. Gmail buộc địa chỉ từ địa chỉ đó đến địa chỉ đó để có thể xác nhận quyền hạn của người gửi.
Nicholas Mordecai

25

Câu trả lời được chấp nhận của @ JimBastard dường như đã được xác định là ngày, tôi đã xem và người gửi thư lib đã không được chạm vào trong hơn 7 tháng, có một số lỗi được liệt kê và không còn được đăng ký trong npm.

gật đầu chắc chắn trông giống như tùy chọn tốt nhất, tuy nhiên url được cung cấp trong các câu trả lời khác trong chuỗi này đều là 404.

gật đầu yêu cầu hỗ trợ các plugin dễ dàng vào gmail, hotmail, v.v. và cũng có tài liệu thực sự đẹp.


9

Bạn luôn có thể sử dụng AlphaMail ( tiết lộ: Tôi là một trong những nhà phát triển đằng sau nó ).

Chỉ cần cài đặt với NPM :

npm install alphamail

Đăng ký tài khoản AlphaMail. Nhận mã thông báo và sau đó bạn có thể bắt đầu gửi bằng dịch vụ 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
);

Và trong GUI AlphaMail ( Bảng điều khiển ), bạn sẽ có thể chỉnh sửa mẫu với dữ liệu bạn đã gửi:

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

Các mẫu được viết bằng Comlang , đó là một ngôn ngữ mẫu đơn giản được thiết kế riêng cho email.


12
Alphamail hiện đã chính thức chết. Rất đáng tiếc - Tôi bắt đầu sử dụng nó chính xác vì bài đăng này. Chúc các nhà phát triển tất cả những điều tốt nhất trong liên doanh tiếp theo của họ.
masotime



3

npm có một vài gói, nhưng chưa có gói nào đạt 1.0. Lựa chọn tốt nhất từ npm list mail:

email@0.2.2
mail@0.1.1
mailer@0.3.0


2

chiến dịch là một giải pháp toàn diện để gửi email trong Node và nó đi kèm với một API rất đơn giản.

Bạn ví dụ như thế này.

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

Để gửi email, bạn có thể sử dụng Mandrill , miễn phí và tuyệt vời. Chỉ cần đặt khóa API của bạn, như thế này:

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

(nếu bạn muốn gửi email bằng nhà cung cấp khác, hãy kiểm tra tài liệu)

Sau đó, khi bạn muốn gửi email, bạn có thể làm như thế này:

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

Repo GitHub có tài liệu khá rộng .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.