diff options
Diffstat (limited to 'core/README.md')
-rw-r--r-- | core/README.md | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/core/README.md b/core/README.md new file mode 100644 index 0000000..c1d04af --- /dev/null +++ b/core/README.md @@ -0,0 +1,94 @@ + +# mail-core + +**Provides the core mail type `Mail` for the `mail` crate.** + +--- + +This crate provides the type called `mail` as well as ways +to create it. It also provides the builder context interface +and the `Resource` type, which is used to represent mail bodies. +Especially such which are attachments or embedded images. + + +# Example + +```rust +extern crate futures; +// Note that the `mail` crate provides a facade re-exporting +// all relevant parts. +extern crate mail_core; +extern crate mail_internals; +#[macro_use] +extern crate mail_headers; + +use std::str; +use futures::Future; + +use mail_internals::MailType; + +// In the facade this is the `headers` module. +use mail_headers::{ + headers::*, + header_components::Domain +}; + +// In the facade this types (and the default_impl module) +// are also exposed at top level +use mail_core::{ + Mail, + default_impl::simple_context, + error::MailError +}; + +fn print_some_mail() -> Result<(), MailError> { + // Domain will implement `from_str` in the future, + // currently it doesn't have a validator/parser. + // So this will become `"example.com".parse()` + let domain = Domain::from_unchecked("example.com".to_owned()); + // Normally you create this _once per application_. + let ctx = simple_context::new(domain, "xqi93".parse().expect("we know it's ascii")) + .expect("this is basically: failed to get cwd from env"); + + let mut mail = Mail::plain_text("Hy there! 😁"); + mail.insert_headers(headers! { + _From: [("I'm Awesome 😁", "bla@examle.com")], + _To: ["unknow@example.com"], + Subject: "Hy there message 😁" + }?); + + // We don't added any think which needs loading but we could have + // and all of it would have been loaded concurrent and async. + let encoded = mail.into_encodable_mail(ctx.clone()) + .wait()? + .encode_into_bytes(MailType::Ascii)?; + + let mail_str = str::from_utf8(&encoded).unwrap(); + println!("{}", mail_str); + Ok(()) +} + +fn main() { + print_some_mail().unwrap() +} +``` + + +Documentation can be [viewed on docs.rs](https://docs.rs/mail-core) +(once it is published). + + +## License + +Licensed under either of + + * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) + * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) + +at your option. + +### Contribution + +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any +additional terms or conditions. |