Files
cagettepei/src/sugoi/mail/BufferedMailer.hx
T
2021-08-27 22:03:50 +04:00

57 lines
1.3 KiB
Haxe

package sugoi.mail;
import sugoi.mail.IMail;
import sugoi.mail.IMailer;
/**
* Manage an email buffer in a table before sending them
* @author fbarbut
*/
class BufferedMailer implements IMailer {
var conf:Dynamic;
var type:String;
public function new() {}
public function init(?c:Dynamic):IMailer {
return this;
}
public function defineFinalMailer(type:String) {
this.type = type;
}
public function send(m:sugoi.mail.IMail, ?params:Dynamic, ?callback:MailerResult->Void):Void {
var bm = new sugoi.db.BufferedMail();
bm.headers = m.getHeaders();
bm.title = m.getTitle();
bm.htmlBody = m.getHtmlBody();
bm.textBody = m.getTextBody();
bm.recipients = m.getRecipients();
bm.sender = m.getSender();
bm.mailerType = this.type;
// custom params
if (params != null) {
bm.data = params;
if (Reflect.hasField(params, "remoteId")) {
bm.remoteId = Reflect.getProperty(params, "remoteId");
}
}
// set sending status as "queued"
var map = new MailerResult();
for (r in m.getRecipients()) {
map.set(r.email, Success(Queued));
}
bm.status = map;
bm.insert();
App.log('email from=<${m.getSender().email}>, subject=<${m.getSubject()}> buffered, waiting for cron to be further processed');
if (callback != null)
callback(map);
}
}