summaryrefslogtreecommitdiffstats
path: root/core/examples/readme.rs
diff options
context:
space:
mode:
Diffstat (limited to 'core/examples/readme.rs')
-rw-r--r--core/examples/readme.rs57
1 files changed, 57 insertions, 0 deletions
diff --git a/core/examples/readme.rs b/core/examples/readme.rs
new file mode 100644
index 0000000..5e0cd42
--- /dev/null
+++ b/core/examples/readme.rs
@@ -0,0 +1,57 @@
+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! 😁", &ctx);
+ 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()
+} \ No newline at end of file