Tutorial kali ini mungkin lebih bermutu dari kemarin  ๐Ÿ˜‚.  tapi karena ini asal bagi saya, maka saya tidak begitu mempedulikannya bermutu atau tidaknya selagi itu yang saya  butuhkan dan orang lain cari tidak masalah, tapi bagi agan yang udah GG ini udah pasti diluar kepala ๐Ÿ˜ฑ๐Ÿ˜œ!

Emang apa sih tutorial kali ini yang saya buat, tutorial kali ini mengirimkan notification berupa HTML dengan menggunakan NODE JS melalui email. waduh kok loncat ya padahal tutorial yang kemarin belum selesai tapi tenang tetap saya lanjutkan ๐Ÿ™๐Ÿ˜„. Ini sebenarnya karena pada hari ini temen saya lagi sibuk searching untuk  permasalahan node js nya.  maklum dianya Laravel  sejati jadi  beralih ke NODE JS butuh sedikit perjuangan. karena saya juga ingin mengerti maka saya pun ikut mencoba membuatnya.

Sebenarnya konsep dalam proses pengiriman Notification melalui email cukup sederhana. hanya membutuhkan email pengirim, data yang dikirim bisa berupa HTML, Text ataupun Image serta email penerima. tapi karena ini notification yang berhubungan dengan user dan admin maka kebanyakan notification yang dikirimkan berupa notification saat lupa password, reset password, notification orderan dan lainnya. Pada kali ini saya akan mengirimkan notifikasikan berupa HTML yang berhubungan dengan Password.

Pada kali ini saya menggunakan nodemailer dalam proses pengirimannya. bagi temen - temen yang belum perna menggunakan node js. untuk menginstall depedensinya cukup dengan :

npm install nodemailer --save

Dan untuk mempercantik tampilan dari email yang diberikan agan bisa juga menambah depedensi lain misalnya menggunakan mail-templates, cara menambahkan dependesinya juga :

npm install email-templates --save 
npm install path --save

Jangan lupa mengecek pada package json nya bener - bener terinstall apa tidak, jika terinsall maka
pada sub dependencies akan ada dependecy baru yaitu nodemailer dan email-templatenya sekalian pathnya juga, mudah kan. setelah proses diatas udah selesai sekarang kita buat controller js nya untuk mengatur apa yang ingin kita kirim berserta isinya.

pertama kita buat dulu variabel untuk email pengirim, biasanya untuk suatu project skala besar emailnya tidak lagi menggunakan gmail.com atau yahoo.com, tapi sudah menggunakan nama instansi pembuatnya, berikut ini function pengirimnya, karena ini percobaan maka saya menggunakan gmail.

var pengirimEmail = nodemailer.createTransport({
    host: 'smtp.gmail.com',
        port: 587,
        secure: false,
        requireTLS: true,
        auth: {
            user: 'kingangle@gmail.com', //email ini berisikan email pengirim
            pass: '*********' //dan ini password dari email pengirim
        }
});

Karena path yang saya kirimkan berupa html maka kita harus membuat tempatnya terlebih dahulu, anda dapat memodif template dibawah ini jika tidak sesuai dengan apa yang temen temen inginkan.

function myFunction(name) { 
    var datakeluar = "<!DOCTYPE html><html><head><title></title><style>.button {background-color: #4CAF50;border: none;color: white;padding: 10px 32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin: 4px 2px;cursor: pointer;border-radius:30px;margin: 0 auto;}</style></head>"+
    "<body><div style='background-color:lightblue'; height=200px;> <h1></h1></div><h2>Hi &ensp;"+name+"!</h2><h2>Reset your Inside Of Art Account  Password</h2>"+
    "<p>We have  received  a required to reset  your Inside of Art  account  password  associated with this email address.<br/>If your have not  placed this required, you can safely  ignore this email and we assure you that your account is completely secure. "+
    "</p><br/><p>If you do need to change your Inside Of Art Password, you can use the Link give below</p><br/><div align='center'><button class='button'>Change Password</button></div><br/><p>Please Contact <a href='#'>kingangle@gmail.com</a> for any queries regarding this.</p></body></html>"+
    "<div align='center'><p style='font-size:12px; color:#808080;'>&copy; 2019 IOA CLothing <br/>Jl. Soekarno Hatta Blok A No.5, Jatimulyo, Kec. Lowokwaru, <br/>Kota Malang, Jawa Timur 65141</p>"+
    "</div>";
    return datakeluar; 

sekarang mari kita buat class exportsnya yang nantinya akan kita panggil di route, ini juga berhubungan dengan req.body apa yang ingin dimasukkan dalam
path HTML yang dikirimkan ke email penerimanya. 

exports.sendemail= (req, res) =>{
    var mailOptions = { 
        from: 'kingsangel@gmail.com',
        to: req.body.to,
        subject:  req.body.subject,
        html: myFunction(req.body.name)
    };
    pengirimEmail.sendMail(mailOptions, (err, info) =>{
        if(err) {
            return  res.status(500).json({
                error: err
            })
        }else{
            console.log('Message  sent', info.messageId, info.response);
            return res.status(200).json({
                message: info
            });
        }
    });
}


habis itu tinggal temen - temen panggil di routenya pasti udah bisa. Mudahkan ? Sangat mudah sekali  ๐Ÿ˜‹. jika temen - temen menggunakan style html yang saya berikan nanti outputnya seperti berikut.
























Post a Comment

Lebih baru Lebih lama