How to send multiple emails in Total.js at once?

Wed Nov 16 2016 08:30:36 GMT+0100 (Central European Standard Time), Peter Širka

How to send multiple emails in Total.js at once?

Total.js framework offers great features for sending emails. I have added a great feature for sending newsletters to Total.js version 2.0 and only a few people know about it.

Definition

Create a definition file e.g. your-app/definitions/newsletter.js:

function newsletter(callback, page) {

    // Example uses PostgreSQL/MySQL/SQLServer/MongoDB database with SQL Agent module
    var sql = DB();

    if (!page)
        page = 1;

    sql.select('users', 'tbl_user').make(function(filter) {
        // Reads 100 users per page
        filter.page(page, 100);
        filter.where('newsletter', true);
        filter.fields('firstname', 'email');
    });

    sql.exec(function(err, response) {

        // No users === end
        if (!response.users.length)
            return callback();

        // Sends 15 emails together
        response.users.limit(15, function(users, next) {

            var messages = [];

            for (var i = 0, length = users.length; i < length; i++) {
                var user = users[i];
                var message = Mail.create('Our new newsletter', F.view('mails/newsletter', user));
                message.to(user.email);
                message.from('info@totaljs.com', 'Total.js framework');

                // Adds the message to pending list
                messages.push(message);
            }

            // The method below sends multiple email messages in the single connection
            Mail.send2(messages, function(err, count) {
                // Next 15 emails
                next();
            });

        }, () => newsletter(callback, page + 1)); // processes next page

    });
}

// Creates a scheduler
F.schedule('09:00', '1 week', () => newsletter(NOOP));

Documentation


Tags

Follow us

Latest blogs
Flow v6 is here!
Thu Mar 07 2019 11:53:54 GMT+0100 (Central European Standard Time)
A critical security fix
Wed Feb 13 2019 22:15:39 GMT+0100 (Central European Standard Time)
New release: Total.js v3.2
Wed Feb 13 2019 22:14:39 GMT+0100 (Central European Standard Time)
Total.js Wiki v2
Fri Jan 04 2019 22:15:01 GMT+0100 (Central European Standard Time)
Total Year 2018
Thu Jan 03 2019 21:14:00 GMT+0100 (Central European Standard Time)

Latest comments
Nice tip
Mauro Junior
Thu Sep 20 2018 21:41:02 GMT+0200 (Central European Summer Time)
Not only for Total.js. You can communicate with different websocket servers.
Peter Širka
Mon Apr 23 2018 20:08:20 GMT+0200 (Central European Summer Time)
Marko: you need to create a buffer with this codepage and write byte-to-byte string. I recommend ...
Peter Širka
Mon Apr 23 2018 20:06:21 GMT+0200 (Central European Summer Time)
Is WEBSOCKETCLIENT only for internal ws connections between totaljs apps?
Stelios Stephanua
Fri Mar 16 2018 06:04:22 GMT+0100 (Central European Standard Time)
Total.js is amazing! ;)
Leonardo Hessel
Tue Dec 19 2017 19:51:15 GMT+0100 (Central European Standard Time)

Pixabay


Read more

Flow v6 is here!

News: We have released a new version of Flow. This version brings great new features and UI improvements.

Thu Mar 07 2019 11:53:54 GMT+0100 (Central European Standard Time)
A critical security fix

News: We were notified about the critical security bug in Total.js framework. Read a prevention.

Wed Feb 13 2019 22:15:39 GMT+0100 (Central European Standard Time)
New release: Total.js v3.2

News: This new release brings a critical security fix and small new improvements. Update Total.js now.

Wed Feb 13 2019 22:14:39 GMT+0100 (Central European Standard Time)
Total.js Wiki v2

Products: I have released a new version of Total.js Wiki. New version brings new improvements.

Fri Jan 04 2019 22:15:01 GMT+0100 (Central European Standard Time)
Total Year 2018

Business: Last year was perfect for Total.js platform. Total.js platform grows up and it has great results.

Thu Jan 03 2019 21:14:00 GMT+0100 (Central European Standard Time)
Total.js Code Editor v1

Products: Try our real-time collaboration tool for Total Developers. Code Editor offers great features for development.

Fri Dec 07 2018 22:55:13 GMT+0100 (Central European Standard Time)