public void OnCommandExecute(object sender, CommandExecuteEventArgs args) { var type = args.Handler.GetType(); var actionRequiresAuth = type.GetCustomAttributes(typeof(RequiresAuthAttribute), false).Any(); var transactionRequiresAuth = args.Transaction.Settings.RequireAuth; if (actionRequiresAuth && transactionRequiresAuth && !args.Transaction.GetProperty <bool>("Authenticated")) { args.Response = new SMTPResponse(SMTPStatusCode.AuthRequired); } }
public void OnCommandExecute(object sender, CommandExecuteEventArgs args) { var type = args.Handler.GetType(); var unsecuredAllowed = type.GetCustomAttributes(typeof(UnsecureAllowedAttribute), false).Any(); var requireEncryption = args.Transaction.Settings.RequireTLS; var isSecured = args.Transaction.TLSActive; if (!unsecuredAllowed && requireEncryption && !isSecured) { args.Response = new SMTPResponse(SMTPStatusCode.AuthRequired, "Must issue a STARTTLS command first"); } }
public SMTPResponse Execute(SMTPTransaction transaction, string parameters) { var args = new CommandExecuteEventArgs(transaction, this, parameters); if (OnExecute != null) { OnExecute(this, args); } if (args.Response != null) { return(args.Response); } return(DoExecute(transaction, parameters)); }