[−][src]Struct fxa_email_service::db::delivery_problems::DeliveryProblems
Bounce/complaint registry.
Currently this writes to both
Redis and the emailBounces table in fxa-auth-db-mysql,
but only reads from the latter.
This is the first step
in a gradual migration process
away from the auth db.
Methods
impl<D> DeliveryProblems<D> where
D: AuthDb, [src]
impl<D> DeliveryProblems<D> where
D: AuthDb, pub fn new(settings: &Settings, auth_db: D) -> DeliveryProblems<D>[src]
pub fn new(settings: &Settings, auth_db: D) -> DeliveryProblems<D>Instantiate the registry.
pub fn check(&self, address: &EmailAddress) -> AppResult<()>[src]
pub fn check(&self, address: &EmailAddress) -> AppResult<()>Check an email address against bounce/complaint records from the registry.
If matching records are found,
they are checked against thresholds
defined in the DeliveryProblemLimits setting.
pub fn record_bounce(
&self,
address: &EmailAddress,
bounce_type: BounceType,
bounce_subtype: BounceSubtype,
timestamp: DateTime<Utc>
) -> AppResult<()>[src]
pub fn record_bounce(
&self,
address: &EmailAddress,
bounce_type: BounceType,
bounce_subtype: BounceSubtype,
timestamp: DateTime<Utc>
) -> AppResult<()>Record a hard or soft bounce against an email address.
pub fn record_complaint(
&self,
address: &EmailAddress,
complaint_type: Option<ComplaintFeedbackType>,
timestamp: DateTime<Utc>
) -> AppResult<()>[src]
pub fn record_complaint(
&self,
address: &EmailAddress,
complaint_type: Option<ComplaintFeedbackType>,
timestamp: DateTime<Utc>
) -> AppResult<()>Record a complaint against an email address.
Trait Implementations
impl<D> Sync for DeliveryProblems<D> where
D: AuthDb, [src]
impl<D> Sync for DeliveryProblems<D> where
D: AuthDb, impl<D: Debug + AuthDb> Debug for DeliveryProblems<D>[src]
impl<D: Debug + AuthDb> Debug for DeliveryProblems<D>Auto Trait Implementations
impl<D> Send for DeliveryProblems<D> where
D: Send,
impl<D> Send for DeliveryProblems<D> where
D: Send, Blanket Implementations
impl<T, U> Into for T where
U: From<T>, [src]
impl<T, U> Into for T where
U: From<T>, impl<T> From for T[src]
impl<T> From for Timpl<T, U> TryFrom for T where
T: From<U>, [src]
impl<T, U> TryFrom for T where
T: From<U>, type Error = !
🔬 This is a nightly-only experimental API. (
try_from)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>impl<T> Borrow for T where
T: ?Sized, [src]
impl<T> Borrow for T where
T: ?Sized, impl<T, U> TryInto for T where
U: TryFrom<T>, [src]
impl<T, U> TryInto for T where
U: TryFrom<T>, type Error = <U as TryFrom<T>>::Error
🔬 This is a nightly-only experimental API. (
try_from)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>impl<T> BorrowMut for T where
T: ?Sized, [src]
impl<T> BorrowMut for T where
T: ?Sized, fn borrow_mut(&mut self) -> &mut T[src]
fn borrow_mut(&mut self) -> &mut Timpl<T> Any for T where
T: 'static + ?Sized, [src]
impl<T> Any for T where
T: 'static + ?Sized, fn get_type_id(&self) -> TypeId[src]
fn get_type_id(&self) -> TypeIdimpl<T> Same for T
impl<T> Same for Ttype Output = T
Should always be Self
impl<T> Typeable for T where
T: Any,
impl<T> Typeable for T where
T: Any, impl<T> Configure for T where
T: ?Sized, [src]
impl<T> Configure for T where
T: ?Sized, fn readable(self) -> Readable<Self>[src]
fn readable(self) -> Readable<Self>Marks self as using is_human_readable == true
fn compact(self) -> Compact<Self>[src]
fn compact(self) -> Compact<Self>Marks self as using is_human_readable == false
impl<T> SendSyncUnwindSafe for T where
T: Send + Sync + UnwindSafe + ?Sized,
impl<T> SendSyncUnwindSafe for T where
T: Send + Sync + UnwindSafe + ?Sized,