pvincent
3 years ago
6 changed files with 224 additions and 137 deletions
-
53src/App.hx
-
4src/controller/Cron.hx
-
11src/controller/Messages.hx
-
138src/sugoi/db/BufferedMail.hx
-
39src/sugoi/mail/BufferedMailer.hx
-
100src/sugoi/mail/SendEmailMailer.hx
@ -0,0 +1,100 @@ |
|||||
|
package sugoi.mail; |
||||
|
|
||||
|
import tink.core.Future; |
||||
|
import tink.core.Noise; |
||||
|
import sugoi.mail.IMailer; |
||||
|
import smtpmailer.Address; |
||||
|
|
||||
|
typedef SmtpInfo = { |
||||
|
host:String, |
||||
|
port:Int, |
||||
|
auth:{ |
||||
|
username:String, password:String |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Send emails thru OS command `sendemail` |
||||
|
* requires: `apt install sendemail libio-socket-ssl-perl libnet-ssleay-perl` |
||||
|
*/ |
||||
|
class SendEmailMailer implements IMailer { |
||||
|
var m:SmtpInfo; |
||||
|
|
||||
|
public function new() {} |
||||
|
|
||||
|
public function init(?conf:{ |
||||
|
smtp_host:String, |
||||
|
smtp_port:Int, |
||||
|
smtp_user:String, |
||||
|
smtp_pass:String |
||||
|
}):IMailer { |
||||
|
var mailer:SendEmailMailer = new SendEmailMailer(); |
||||
|
mailer.m = { |
||||
|
host: conf.smtp_host, |
||||
|
port: conf.smtp_port, |
||||
|
auth: { |
||||
|
username: conf.smtp_user, |
||||
|
password: conf.smtp_pass |
||||
|
} |
||||
|
}; |
||||
|
return mailer; |
||||
|
} |
||||
|
|
||||
|
public function send(e:sugoi.mail.IMail, ?params:Dynamic, ?callback:MailerResult->Void) { |
||||
|
var mailServer = "mail1.zourit.net"; |
||||
|
var mailPort = 587; |
||||
|
|
||||
|
var fromName = "John Doe"; |
||||
|
var fromEmail = "no-reply@comptoirduvrac.re"; |
||||
|
|
||||
|
var args = [ |
||||
|
"-f", |
||||
|
'${fromName} <${fromEmail}>', |
||||
|
"-s", |
||||
|
"mail1.zourit.net:587", |
||||
|
"-t", |
||||
|
"pvincent@comptoirduvrac.re", |
||||
|
// "-bcc", "pvincent974@gmail.com,pvincent974@laposte.net", |
||||
|
"-u", |
||||
|
e.getSubject(), |
||||
|
"-m", |
||||
|
"alors tout va bien", |
||||
|
"-xu", |
||||
|
"postmaster@comptoirduvrac.re", |
||||
|
"-xp", |
||||
|
"QqQeAPT6EpoK" |
||||
|
]; |
||||
|
|
||||
|
App.log('args=${args.join(" ")}'); |
||||
|
|
||||
|
var exitCode = Sys.command("sendemail", args); |
||||
|
// var exitCode = 0; |
||||
|
|
||||
|
if (exitCode == 0) |
||||
|
App.log('email from="${e.getSender().name} <${e.getSender().email}"> subject=<${e.getSubject()}> successfully sent'); |
||||
|
else |
||||
|
App.log('ERROR: email from="${e.getSender().name} <${e.getSender().email}"> subject=<${e.getSubject()}> cannot be sent'); |
||||
|
|
||||
|
// sys.io.File.saveContent('/tmp/my_file.json', "CONTENT"); |
||||
|
|
||||
|
// var surprise = m.send({ |
||||
|
// subject: e.getSubject(), |
||||
|
// from: new Address({address: e.getSender().email}), |
||||
|
// to: Lambda.array(Lambda.map(e.getRecipients(), function(x) return new Address({address: x.email}))), |
||||
|
// headers: e.getHeaders(), |
||||
|
// content: { |
||||
|
// text: e.getTextBody(), |
||||
|
// html: e.getHtmlBody() |
||||
|
// } |
||||
|
// }); |
||||
|
|
||||
|
if (callback != null) { |
||||
|
var map = new MailerResult(); |
||||
|
if (exitCode == 0) |
||||
|
map.set("*", Success(Sent)); |
||||
|
else |
||||
|
map.set("*", Failure(HardBounce)); |
||||
|
callback(map); |
||||
|
} |
||||
|
} |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue