summaryrefslogtreecommitdiffstats
path: root/core/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'core/README.md')
-rw-r--r--core/README.md94
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.