SMTP-API

This crate allows you to quickly and more easily generate SendGrid X-SMTPAPI headers.

BuildStatus

Examples

New Header

```rust use smtpapi::{Header};

let mut header = Header::new(); ```

Recipients

```rust use smtpapi::{Header};

let mut header = Header::new(); header.addto("email@domain.com"); // or header.addtos(vec!["email1@domain.com", "email2@domain.com"]); // or header.set_tos(vec!["email1@domain.com", "email2@domain.com"]); ```

Substitutions

```rust use smtpapi::{Header};

let mut header = Header::new();

header.addsubstitution("[name]", "myname"); // or header.addsubstitutions("[name]", vec!["myname1", "myname2"]); // or let mut allsubs : HashMap> = HashMap::new(); allsubs.insert("-item1-".tostring(), vec!["rust".tostring(), "power".tostring()]); allsubs.insert("-item2-".tostring(), vec!["rust".tostring(), "power".tostring()]);

header.setsubstitutions(allsubs); ```

Section

```rust use smtpapi::{Header};

let mut header = Header::new(); header.addsection("-top-", "sample"); // or let mut sections : HashMap = HashMap::new(); sections.insert("-item1-".tostring(), "value1".tostring()); sections.insert("-item2-".tostring(), "value2".to_string());

header.set_sections(sections); ```

Category

```rust use smtpapi::{Header};

let mut header = Header::new(); header.addcategory("welcome"); // or header.addcategories(vec!["welcome", "newaccounts"]); // or header.setcategories(vec!["welcome", "new_accounts"]); ```

Unique Arguments

```rust use smtpapi::{Header};

let mut header = Header::new(); header.adduniquearg("accountid", "123412-121-1212"); // or let mut uniqueargs : HashMap = HashMap::new(); uniqueargs.insert("-arg1-".tostring(), "value1".tostring()); uniqueargs.insert("-arg2-".tostring(), "value2".tostring());

header.setuniqueargs(unique_args); ```

Filters

```rust use smtpapi::{Header, Filter};

let mut header = Header::new(); header.addfilter("clicktrack", "enabled", "1") .addfilter("opentrack", "enabled", "1"); // or let mut filter = Filter::new(); filter.addsetting("enable", "1") .addsetting("text/plain", "You can haz footers!");

header.set_filter("footer", filter);

```

Send At

```rust use smtpapi::{Header};

let mut header = Header::new();

header.setsendat(1453213937); // or header.setsendeachat(vec![1453213939, 1453213932, 1453213933]); // or header.addsendeachat(1453213937) .addsendeach_at(1453213939); ```

ASM Group ID

```rust use smtpapi::{Header};

let mut header = Header::new(); header.setasmgroup_id(1221); ```

IP Pools

```rust use smtpapi::{Header};

let mut header = Header::new(); header.setippool("newsletter_pool"); ```

JSONString

```rust use smtpapi::{Header};

let mut header = Header::new(); header.tojsonstring(); ```

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Running Tests

`bash cargo test

MIT License