<commit_before>var nodemailer = require('nodemailer');

module.exports = function notify (waitlist){
// create reusable transporter object using SMTP transport
var emails = waitlist.subscribers.reduce(function(a,b){
    return a +", "+ b;
  });
var transporter = nodemailer.createTransport({
    service: 'Gmail',
    auth: {
        user: '<EMAIL>',
        pass: '<PASSWORD>'
    }
});

// NB! No need to recreate the transporter object. You can use
// the same transporter object for all e-mails

// setup e-mail data with unicode symbols
var mailOptions = {
    from: 'Corsica (<EMAIL>)', // sender address
    to: emails, // list of receivers
    subject: 'A spot has opened up in ' + waitlist.listing.code, // Subject line
    text: 'A spot has opened up in ' + waitlist.listing.code + ": " + waitlist.listing.description + 'click here to join', // plaintext body
    html: '<b>A spot has opened up in ' + waitlist.listing.code + ": " + waitlist.listing.description + 'click here to join</b>' // html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        console.log(error);
    }else{
        console.log('Message sent: ' + info.response);
    }
});

};
<commit_msg>title not description #TODO add texting<commit_after>var nodemailer = require('nodemailer');

module.exports = function notify (waitlist){
// create reusable transporter object using SMTP transport
var emails = waitlist.subscribers.reduce(function(a,b){
    return a +", "+ b;
  });
var transporter = nodemailer.createTransport({
    service: 'Gmail',
    auth: {
        user: '<EMAIL>',
        pass: '<PASSWORD>'
    }
});

// NB! No need to recreate the transporter object. You can use
// the same transporter object for all e-mails

// setup e-mail data with unicode symbols
var mailOptions = {
    from: 'Corsica (<EMAIL>)', // sender address
    to: emails, // list of receivers
    subject: 'A spot has opened up in ' + waitlist.listing.code, // Subject line
    text: 'A spot has opened up in ' + waitlist.listing.code + ": " + waitlist.listing.title + 'click here to join', // plaintext body
    html: '<b>A spot has opened up in ' + waitlist.listing.code + ": " + waitlist.listing.title + 'click here to join</b>' // html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        console.log(error);
    }else{
        console.log('Message sent: ' + info.response);
    }
});

};

{'fraction_non_alphanumeric': 0.13553259141494436, 'fraction_numerical': 0.0, 'mean_word_length': 3.2373737373737375, 'pattern_counts': {'":': 4, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5234514', 'n_tokens_mistral': 769, 'n_tokens_neox': 738, 'n_words': 247}