Skip to main content

EmailMessage

Struct EmailMessage 

Source
pub struct EmailMessage { /* private fields */ }
Expand description

Structured email message primitive.

Implementations§

Source§

impl EmailMessage

Source

pub fn plain_text( subject: impl Into<String>, body: impl Into<String>, ) -> EmailMessage

Creates a plain text message with subject and body.

Examples found in repository?
examples/email_facade_basic_usage.rs (line 6)
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    let mailbox = address::Mailbox::new(Some("Jane Doe"), "jane@example.com")?;
5    let message_id: id::MessageId = "welcome@example.com".parse()?;
6    let message = message::EmailMessage::plain_text("Welcome", "A short note.")
7        .with_header("From", mailbox.to_string())?;
8    let envelope = envelope::Envelope::new(envelope::EnvelopeSender::new("bounce@example.com")?)
9        .with_recipient(envelope::EnvelopeRecipient::new("jane@example.com")?);
10    let mailto_uri = mailto::MailtoBuilder::new()
11        .to("jane@example.com")?
12        .subject("Welcome")
13        .build();
14    let reply = smtp::SmtpReply::new(smtp::SmtpReplyCode::new(250)?, "OK")?;
15    let spf = auth::spf::SpfRecord::new().with_term(auth::spf::SpfTerm::new(
16        auth::spf::SpfQualifier::Fail,
17        auth::spf::SpfMechanism::All,
18    ));
19
20    assert_eq!(message.subject(), Some("Welcome"));
21    assert_eq!(message_id.to_string(), "<welcome@example.com>");
22    assert_eq!(envelope.recipients().len(), 1);
23    assert_eq!(
24        mailto_uri.to_string(),
25        "mailto:jane@example.com?subject=Welcome"
26    );
27    assert_eq!(reply.to_string(), "250 OK");
28    assert_eq!(spf.to_string(), "v=spf1 -all");
29
30    Ok(())
31}
Source

pub fn html(subject: impl Into<String>, body: impl Into<String>) -> EmailMessage

Creates an HTML message with subject and body.

Source

pub const fn new( headers: MessageHeaders, body: MessageBody, kind: MessageKind, ) -> EmailMessage

Creates a message from parts.

Source

pub fn with_header( self, name: impl AsRef<str>, value: impl AsRef<str>, ) -> Result<EmailMessage, HeaderParseError>

Adds a header and returns the updated message.

Examples found in repository?
examples/email_facade_basic_usage.rs (line 7)
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    let mailbox = address::Mailbox::new(Some("Jane Doe"), "jane@example.com")?;
5    let message_id: id::MessageId = "welcome@example.com".parse()?;
6    let message = message::EmailMessage::plain_text("Welcome", "A short note.")
7        .with_header("From", mailbox.to_string())?;
8    let envelope = envelope::Envelope::new(envelope::EnvelopeSender::new("bounce@example.com")?)
9        .with_recipient(envelope::EnvelopeRecipient::new("jane@example.com")?);
10    let mailto_uri = mailto::MailtoBuilder::new()
11        .to("jane@example.com")?
12        .subject("Welcome")
13        .build();
14    let reply = smtp::SmtpReply::new(smtp::SmtpReplyCode::new(250)?, "OK")?;
15    let spf = auth::spf::SpfRecord::new().with_term(auth::spf::SpfTerm::new(
16        auth::spf::SpfQualifier::Fail,
17        auth::spf::SpfMechanism::All,
18    ));
19
20    assert_eq!(message.subject(), Some("Welcome"));
21    assert_eq!(message_id.to_string(), "<welcome@example.com>");
22    assert_eq!(envelope.recipients().len(), 1);
23    assert_eq!(
24        mailto_uri.to_string(),
25        "mailto:jane@example.com?subject=Welcome"
26    );
27    assert_eq!(reply.to_string(), "250 OK");
28    assert_eq!(spf.to_string(), "v=spf1 -all");
29
30    Ok(())
31}
Source

pub const fn headers(&self) -> &MessageHeaders

Returns message headers.

Source

pub const fn body(&self) -> &MessageBody

Returns the message body.

Source

pub const fn kind(&self) -> MessageKind

Returns the message kind.

Source

pub fn subject(&self) -> Option<&str>

Returns the Subject header, when present.

Examples found in repository?
examples/email_facade_basic_usage.rs (line 20)
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    let mailbox = address::Mailbox::new(Some("Jane Doe"), "jane@example.com")?;
5    let message_id: id::MessageId = "welcome@example.com".parse()?;
6    let message = message::EmailMessage::plain_text("Welcome", "A short note.")
7        .with_header("From", mailbox.to_string())?;
8    let envelope = envelope::Envelope::new(envelope::EnvelopeSender::new("bounce@example.com")?)
9        .with_recipient(envelope::EnvelopeRecipient::new("jane@example.com")?);
10    let mailto_uri = mailto::MailtoBuilder::new()
11        .to("jane@example.com")?
12        .subject("Welcome")
13        .build();
14    let reply = smtp::SmtpReply::new(smtp::SmtpReplyCode::new(250)?, "OK")?;
15    let spf = auth::spf::SpfRecord::new().with_term(auth::spf::SpfTerm::new(
16        auth::spf::SpfQualifier::Fail,
17        auth::spf::SpfMechanism::All,
18    ));
19
20    assert_eq!(message.subject(), Some("Welcome"));
21    assert_eq!(message_id.to_string(), "<welcome@example.com>");
22    assert_eq!(envelope.recipients().len(), 1);
23    assert_eq!(
24        mailto_uri.to_string(),
25        "mailto:jane@example.com?subject=Welcome"
26    );
27    assert_eq!(reply.to_string(), "250 OK");
28    assert_eq!(spf.to_string(), "v=spf1 -all");
29
30    Ok(())
31}
Source

pub fn body_mime(&self) -> Option<MimeType>

Parses the Content-Type header using the shared use-mime primitive.

Trait Implementations§

Source§

impl Clone for EmailMessage

Source§

fn clone(&self) -> EmailMessage

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for EmailMessage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Eq for EmailMessage

Source§

impl PartialEq for EmailMessage

Source§

fn eq(&self, other: &EmailMessage) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for EmailMessage

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.