Bulk mailer");
client.writeln("");
if (typeof(data) != 'undefined' && data != null)
{
client.writeln("
Please check your login settings and verify that the message and address list files exist.");
}
else
{
if (!data) data = new Record;
try {
var file = new Stream('mail.txt','rt');
data = new Record;
file.readMIME(data);
file.close();
} catch(err) {writeln(err) }
}
client.writeln("
You may close this window ");
client.writeln('');
}
Mailer.prototype.preview = function(client,data)
{
var addressfile = null;
var notefile = null;
try {
var mail = new Mail(data.get('method'),data.get('name'),data.get('password'),data.get('server'),'','',data.get('return'));
if (data.get('addressfile'))
addressfile = new Stream(data.get('addressfile'),'rt');
if (data.get('notefile'))
notefile = new Stream(data.get('notefile'),'rb');
} catch (err)
{
return this.home(client,data);
}
client.writeln("HTTP/1.1 200 OK");
client.writeln("client: close");
client.writeln("Date: ", client.startTime.toUTCString());
client.writeln("Expires: ", client.startTime.toUTCString());
client.writeln("Server: Mailer/0.1");
client.writeln("Content-type: text/html\n");
client.writeln("
")
client.writeln("Logging into ",data.get('server'),' as ',data.get('name')," ");
// writeln(data.toString());
if (data.get('METHOD') == '') data.set('METHOD','SMTP');
var addressfile = null;
var notefile = null;
try {
var mail = new Mail(data.get('method'),data.get('name'),data.get('password'),data.get('server'),'','',data.get('return'));
if (data.get('addressfile'))
addressfile = new Stream(data.get('addressfile'),'rt');
if (data.get('notefile'))
notefile = new Stream(data.get('notefile'),'rb');
} catch (err)
{
return this.home(client,data);
}
var note = data.get('note');
if (notefile) note += '\r\n' + notefile.readText();
var subject = data.get('subject');
var address = data.get('address');
try {
var file = new Stream('mail.txt','wt');
data.unSet('note');
file.writeMIME(data);
file.close();
delete file;
} catch(err)
{
writeln(err)
}
var trouble = new Array;
var success = new Array;
client.writeln("
Sending
");
if (address)
{
client.writeln(' ',address,' ');
try {
if (mail.send(address,subject,note))
{
client.writeln("OK");
success.push(address);
}
else
{
trouble.push({name:address, why: ''});
}
} catch(err)
{
client.writeln('',err,'');
trouble.push(address);
}
}
if (data.get('addressfield')) /* mailmerge */
{
var t = new Table(data.get('addressfile'));
for (var i=1; i <= t.count; i++)
{
var address = t.get(i,data.get('addressfield'));
client.writeln(' ',address,' ');
var n = new Stream;
n.format(note,t.getRow(i));
client.writeln('
Your message was sent to these addresses");
for(var i in success)
client.writeln(" ",success[i]);
}
if (trouble.length)
{
client.writeln("
I was unable to send mail to these addresses");
for(var i in trouble)
client.writeln(" ",trouble[i].name,": ",trouble[i].value," ");
}
client.writeln("
");
client.writeln("");
}
Mailer.prototype.run = function()
{
if (this.http != null) return;
this.http = null;
for (var port = 8080; this.http == null && port < 8180; port++)
{
try {
this.http = new Server(port);
} catch(err)
{
writeln('Port ', port,' appears to be in use');
}
}
var ie = system.getKey('hkey_classes_root/htmlfile/shell/open/command',"");
var browser = null
try {
var cmd = ie + ' ' + '"http://127.0.0.1:'+ this.http.port + '/"'
writeln(cmd)
cmd = cmd.split('-');
browser = new Process(cmd[0], '-' + cmd[1]); //'-nohome ' + '"http://'+ this.http + '/"');
//browser = new Process("c:\\program files\\internet explorer\\iexplore.exe", '-nohome ' + '"http://'+ this.http + '/"');
} catch(x) {writeln("Couldn't open the browser: ",x);}
//var browser = new Process('http://127.0.0.1:' + this.http.port + '/');
//openBrowser("http://127.0.0.1:" + this.http.port + "/");
while (!jsShouldStop() && browser.active) /* invokes garbage collection, and may stall */
{
if (!this.http.anyoneWaiting)
{
sleep(100);
continue;
}
var client = this.http.accept();
if (client == null)
continue;
var request = client.readLine().split(/\s+/);
client.method = request[0];
client.uri = request[1];
if (client.uri == null || client.uri == '') client.uri = '/';
client.version = request[2];
//this.page() should give enough time for the header packet to arrive
if (client.canRead)
{
client.startTime = new Date();
client.header = new Record;
client.readMIME(client.header);
}
client.appname = client.uri.substr(1);
client.query = ''
request = client.uri.match(/\/?([^?]*)\?(.*)/);
if (request != null)
{
client.appname = request[1];
client.query = request[2];
}
if (client.method == "GET" && client.query)
client.data = new Record(client.query,'&');
else if (client.method = "POST" && client.header.get('Content-type') == 'application/x-www-form-urlencoded')
client.data = new Record(client.read(client.header.get('Content-length')),'&');
if (client.data)
{for(x=0; xHTTP/1.1 404 Not Found");
client.writeln(" URL:",client.uri);
client.writeln(" Home");
client.close();
}
browser.close();
this.http.close();
}
var server = new Mailer();
server.run();
delete server;