Skip to main content

Crate email_message

Crate email_message 

Source
Expand description

Typed email addresses, message content, and validated outbound messages.

Use this crate to construct provider-independent email values. RFC 822/MIME byte parsing and rendering are intentionally handled by email-message-wire, while transport crates apply provider-specific limits and delivery policies.

§Quick start

use email_message::{Address, Body, Message};

let message = Message::builder(Body::text("Hello"))
    .from_mailbox("sender@example.com".parse()?)
    .to(vec![Address::Mailbox("recipient@example.com".parse()?)])
    .subject("Welcome")
    .build_outbound()?;

assert_eq!(message.as_message().subject(), Some("Welcome"));

§Cargo features

No features are enabled by default.

  • mime exposes MimePart, the low-level MIME tree. The other MIME value types are always available. The email-message-wire crate enables this feature on its dependency because rendering needs the tree.
  • serde implements serialization and deserialization for public model types. Binary attachment and MIME bodies use padded base64 strings.
  • schemars implements JSON Schema generation. When combined with mime, schemas include MimePart.
  • arbitrary implements arbitrary::Arbitrary for generated test data, including feature-gated model types that are also enabled.
  • rfc5322-string-compat lets serde deserializers and schemars schemas accept RFC 5322 address strings in addition to the typed object shape. It has no effect unless serde or schemars is also enabled.

All features are additive and may be enabled together.

§Platform support

This is a std crate with no operating-system APIs or target-specific implementation. It supports Rust targets that provide the standard library.

Re-exports§

pub use address::Address;
pub use address::AddressBackendError;
pub use address::AddressList;
pub use address::AddressParseError;
pub use address::Group;
pub use address::GroupParseError;
pub use address::MAX_ADDRESS_INPUT_BYTES;
pub use address::Mailbox;
pub use address::MailboxList;
pub use address::MailboxParseError;
pub use email::EmailAddress;
pub use email::EmailAddressParseError;
pub use message::Attachment;
pub use message::AttachmentBody;
pub use message::AttachmentReference;
pub use message::Body;
pub use message::Disposition;
pub use message::Envelope;
pub use message::Header;
pub use message::HeaderValidationError;
pub use message::Message;
pub use message::MessageBuilder;
pub use message::MessageValidationError;
pub use message::OutboundMessage;
pub use message_id::MessageId;
pub use message_id::MessageIdParseError;
pub use mime_types::ContentDisposition;
pub use mime_types::ContentDispositionParseError;
pub use mime_types::ContentTransferEncoding;
pub use mime_types::ContentTransferEncodingParseError;
pub use mime_types::ContentType;
pub use mime_types::ContentTypeParseError;
pub use mime_types::MediaType;
pub use mime_types::ParameterValue;
pub use mime_types::MimePart;

Modules§

address
RFC 5322 mailboxes, groups, addresses, and address lists. RFC 5322 mailbox, group, address, and address-list values.
email
Validated RFC 5322 addr-spec email addresses. Validated RFC 5322 addr-spec email addresses.
message
Message bodies, attachments, headers, builders, and outbound validation. Provider-independent message bodies, attachments, headers, and validation.
message_id
Validated RFC 5322 Message-ID values. Validated RFC 5322 Message-ID values.
mime_types
MIME content-type, content-disposition, and content-transfer-encoding types.

Enums§

ParseError
Error returned when parsing one of the crate’s core string value types.