Toidicode.com

Toidicode.com

BASIC TO ADVANCE

Bài 15: Gửi mail trong Node.js

Mail là một phần khá là quan trọng trong các trang Web, và hầu như ngôn ngữ nào nó cũng hỗ trợ chúng ta gửi mail. Và bài hôm nay mình sẽ giới thiệu với mọi người cách gửi mail trong Node.js.

1, Chuẩn bị.

Đầu tiên mọi người cần tạo cho mình một thư mục mới và trong thư mục này chứa một file main.js. Sau đó mọi người sử dụng cmd cd đến thư mục dự án mà mọi người vừa tạo và chạy lệnh:

npm install nodemailer

Lệnh trên là để cài đặt module nodemailer, chúng ta sẽ sử dụng module này để gửi mail trong Node.js.

2, Cấu hình và gửi email.

Sau khi đã cài đặt xong module nodemailer mọi người mở file main.js lên và thực hiện require modole.

// main.js
var nodemailer = require('nodemailer');

Sau đó để có thể gửi email bạn cần cấu hình 1 số thông số theo cú pháp như sau:

// main.js
var nodemailer = require('nodemailer');

const option = {
    service: 'gmail',
    auth: {
        user: '[email protected]', // email hoặc username
        pass: '*******' // password
    }
};
var transporter = nodemailer.createTransport(option);

Và nếu như bạn muốn kiểm tra xem chương trình đã kết nối thành công đến email chưa thì sử dụng cú pháp sau:

transporter.verify(function(error, success) {
    // Nếu có lỗi.
    if (error) {
        console.log(error);
    } else { //Nếu thành công.
        console.log('Kết nối thành công!');
    }
});

Nếu như đã kết nối thành công rồi thì chúng ta sẽ tiếp tục chuyển sang bước cấu hình email nhận thư.

var mail = {
    from: '[email protected]', // Địa chỉ email của người gửi
    to: '[email protected]', // Địa chỉ email của người gửi
    subject: 'Thư được gửi bằng Node.js', // Tiêu đề mail
    text: 'Toidicode.com', // Nội dung mail dạng text
    html: '<h1>Toidicode.com</h1>' // Nội dung mail dạng html
};
//Tiến hành gửi email
transporter.sendMail(mail, function(error, info) {
    if (error) { // nếu có lỗi
        console.log(error);
    } else { //nếu thành công
        console.log('Email sent: ' + info.response);
    }
});

Bên cạnh đó bạn cũng có thể cấu hình thêm các thông số sau vào email nhận thư.

Field Mô Tả
sender Email sẽ xuất hiện trong sender
replyTo Email sẽ nhận thư trả lời.
encoding  Dạng encode text/html. Mặc định là utf-8.
attachments  Object chứa các file đính kèm (xem thêm).
... .... xem thêm

Và nếu như bạn muốn gửi thư cho nhiều email một lúc, thì ở field to bạn chỉ cần ngăn các giữa các email bằng dấu ,.

VD:

var mail = {
    from: '[email protected]', // Địa chỉ email của người gửi
    to: '[email protected], [email protected]', // Địa chỉ email của người gửi
    subject: 'Thư được gửi bằng Node.js', // Tiêu đề mail
    text: 'Toidicode.com', // Nội dung mail dạng text
    html: '<h1>Toidicode.com</h1>' // Nội dung mail dạng html
};

3, Full source code.

Và đây là full source của bài này.

// main.js
var nodemailer = require('nodemailer');

const option = {
    service: 'gmail',
    auth: {
        user: '[email protected]', // email hoặc username
        pass: '******' // password
    }
};
var transporter = nodemailer.createTransport(option);

transporter.verify(function(error, success) {
    // Nếu có lỗi.
    if (error) {
        console.log(error);
    } else { //Nếu thành công.
        console.log('Kết nối thành công!');
        var mail = {
            from: '[email protected]', // Địa chỉ email của người gửi
            to: '[email protected], [email protected]', // Địa chỉ email của người gửi
            subject: 'Thư được gửi bằng Node.js', // Tiêu đề mail
            text: 'Toidicode.com học lập trình online miễn phí', // Nội dung mail dạng text
        };
        //Tiến hành gửi email
        transporter.sendMail(mail, function(error, info) {
            if (error) { // nếu có lỗi
                console.log(error);
            } else { //nếu thành công
                console.log('Email sent: ' + info.response);
            }
        });
    }
});

4, Lời kết.

Phần này mình chỉ giới thiệu qua với mọi người về cách gửi email trong Node.js thôi còn nếu như bạn nào muốn tìm hiểu thêm về các driver trong đó thì có thể tham khảo thêm tại đây.

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vũ Thanh Tài

About author
The best way to learn is to share
Xem tất cả bài đăng

6 Comments

password là password của cái nào v

Nguyễn Đình Hùng

6 năm trước

Hiện hay google mặc định đã tắt truy cập kém an toàn nên bạn thường gặp lỗi trong bước connect vì thế bạn phải bật chế độ truy vập kém an toàn ở đây =))

https://myaccount.google.com/lesssecureapps?pli=1

ádasd

5 năm trước

Hi all, em đang làm đến bước cấu hình email nhận thư thì gặp lỗi này (cmt bên dưới). Ai gặp vấn đề này rồi giúp em với ạ. Thanks all!

Son Nguyen

3 năm trước

Sau khi chạy lệnh node main.js gặp lỗi này:
Error: Mail command failed: 530-5.7.0 Authentication Required. Learn more at ...

Son Nguyen

3 năm trước

Chào Son Nguyen,

Cái này là do bạn chưa sử dụng username, password hoặc có thể thông tin sai nhé bạn.

Vũ Thanh Tài

3 năm trước

Hi anh Tài,
Em đã check lại và chạy được rồi anh ạ. Em cảm ơn anh!

Son Nguyen

3 năm trước

Bình luận

Captcha