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
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)
Total.js Code Editor v1
Fri Dec 07 2018 22:55:13 GMT+0100 (Central European Standard Time)
New release: Total.js v3.1
Fri Dec 07 2018 11:41:40 GMT+0100 (Central European Standard Time)
New CDN for Flow + Dashboard + Flowboard
Sun Nov 04 2018 09:05:03 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

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)
New release: Total.js v3.1

News: I have released a new version of Total.js with bug fixes and with small improvements.

Fri Dec 07 2018 11:41:40 GMT+0100 (Central European Standard Time)
New CDN for Flow + Dashboard + Flowboard

News: I have changed CDN for Flow + Dashboard + Flowboard components to KeyCDN.

Sun Nov 04 2018 09:05:03 GMT+0100 (Central European Standard Time)
OpenPlatform v3

News: I have published a new version of OpenPlatform. New, better, faster, more secure and more simpler.

Mon Oct 15 2018 10:11:07 GMT+0200 (Central European Summer Time)