forked from cory/tildefriends
sandboxos => tildefriends
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3157 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
74
packages/cory/smtp/smtp.js
Normal file
74
packages/cory/smtp/smtp.js
Normal file
@ -0,0 +1,74 @@
|
||||
"use strict";
|
||||
|
||||
//! {"permissions": ["network"]}
|
||||
|
||||
terminal.print("Hello, world!");
|
||||
|
||||
let kFrom = core.user.name + "@unprompted.com";
|
||||
let kTo = "test@unprompted.com";
|
||||
let kSubject = "Hello, world!";
|
||||
let kBody = "This is the body of the email."
|
||||
|
||||
let inBuffer = "";
|
||||
let sentFrom = false;
|
||||
let sentTo = false;
|
||||
let sentData = false;
|
||||
|
||||
function lineReceived(socket, line) {
|
||||
terminal.print("> ", line);
|
||||
let parts = line.split(" ", 1);
|
||||
terminal.print(JSON.stringify(parts));
|
||||
if (parts[0] == "220") {
|
||||
socket.write("HELO rowlf.unprompted.com\r\n");
|
||||
} else if (parts[0] == "250") {
|
||||
if (!sentFrom) {
|
||||
terminal.print("FROM");
|
||||
socket.write("MAIL FROM: " + kFrom + "\r\n");
|
||||
sentFrom = true;
|
||||
} else if (!sentTo) {
|
||||
terminal.print("TO");
|
||||
socket.write("RCPT TO: " + kTo + "\r\n");
|
||||
sentTo = true;
|
||||
} else if (!sentData) {
|
||||
terminal.print("DATA");
|
||||
socket.write("DATA\r\n");
|
||||
sentData = true;
|
||||
} else {
|
||||
terminal.print("QUIT");
|
||||
socket.write("QUIT\r\n");
|
||||
}
|
||||
} else if (parts[0] == "354") {
|
||||
terminal.print("MESSAGE");
|
||||
socket.write("Subject: " + kSubject + "\r\n\r\n" + kBody + "\r\n.\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
function dataReceived(socket, data) {
|
||||
if (data === null) {
|
||||
return;
|
||||
}
|
||||
terminal.print(data);
|
||||
inBuffer += data;
|
||||
let again = true;
|
||||
while (again) {
|
||||
again = false;
|
||||
let end = inBuffer.indexOf("\n");
|
||||
if (end != -1) {
|
||||
again = true;
|
||||
let line = inBuffer.substring(0, end);
|
||||
inBuffer = inBuffer.substring(end + 1);
|
||||
lineReceived(socket, line);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
network.newConnection().then(function(socket) {
|
||||
socket.read(function(data) {
|
||||
try {
|
||||
dataReceived(socket, data);
|
||||
} catch (error) {
|
||||
terminal.print("ERROR: ", error.message);
|
||||
}
|
||||
});
|
||||
socket.connect("localhost", 25);
|
||||
});
|
Reference in New Issue
Block a user