Files
cagettepei/src/sugoi/mail/IMailer.hx
T
2021-08-27 17:54:17 +04:00

41 lines
957 B
Haxe

package sugoi.mail;
import tink.core.Future;
import tink.core.Outcome;
/**
* Errors that occurs after sending an email thru a mailer
*/
enum MailerError{
GenericError(e:tink.core.Error);
HardBounce; //bad mailbox
SoftBounce; //mailbox exists but is full or not reachable
Spam; //email is considered spam
Unsub; //this user unsubscribed from this service/list
Unsigned; //the sender is invalid ( i.e does not match the SPF records )
}
enum MailerSuccess{
Sent;
Queued;
}
typedef MailerResult = Map<String,Outcome<MailerSuccess,MailerError>>
/**
* Interface for "Mailers"
*
* @author fbarbut
*/
interface IMailer
{
/**
* init with a configuration object
*/
public function init(?conf:{smtp_host:String,smtp_port:Int,smtp_user:String,smtp_pass:String}):IMailer;
/**
* Sends an email. A callback can be defined to handle the result
*/
public function send(email:IMail,?params:Dynamic,?callback:MailerResult->Void):Void;
}