Loading aws/sdk/examples/ses/Cargo.toml +8 −3 Original line number Diff line number Diff line [package] name = "ses-code-examples" version = "0.1.0" authors = ["Russell Cohen <rcoh@amazon.com>"] authors = ["Russell Cohen <rcoh@amazon.com>", "Doug Schwartz <dougsch@amazon.com>"] edition = "2018" [dependencies] ses = { package = "aws-sdk-sesv2", path = "../../build/aws-sdk/sesv2" } aws-types = { path = "../../build/aws-sdk/aws-types" } tokio = { version = "1", features = ["full"] } aws-sdk-sesv2 = { path = "../../build/aws-sdk/sesv2" } structopt = { version = "0.3", default-features = false } tracing-subscriber = "0.2.18" aws/sdk/examples/ses/src/bin/create-contact-list.rs 0 → 100644 +71 −0 Original line number Diff line number Diff line /* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ use aws_types::region::ProvideRegion; use ses::{Client, Config, Error, Region}; use structopt::StructOpt; #[derive(Debug, StructOpt)] struct Opt { /// The name of the contact list. #[structopt(short, long)] contact_list: String, /// The AWS Region. #[structopt(short, long)] default_region: Option<String>, /// Whether to display additional runtime information #[structopt(short, long)] verbose: bool, } /// Creates a new contact list. /// # Arguments /// /// * `-c CONTACT-LIST` - The name of the contact list. /// * `[-d DEFAULT-REGION]` - The region in which the client is created. /// If not supplied, uses the value of the **AWS_DEFAULT_REGION** environment variable. /// If the environment variable is not set, defaults to **us-west-2**. /// * `[-v]` - Whether to display additional information. #[tokio::main] async fn main() -> Result<(), Error> { let Opt { contact_list, default_region, verbose, } = Opt::from_args(); let region = default_region .as_ref() .map(|region| Region::new(region.clone())) .or_else(|| aws_types::region::default_provider().region()) .unwrap_or_else(|| Region::new("us-west-2")); if verbose { println!("SES client version: {}", ses::PKG_VERSION); println!("Region: {:?}", ®ion); println!("Contact list: {}", &contact_list); println!(); } let conf = Config::builder().region(region).build(); let client = Client::from_conf(conf); let resp = client .create_contact_list() .contact_list_name(contact_list) .send() .await; match resp { Ok(_) => println!("Created contact list."), Err(e) => eprintln!("Got an error attempting to create contact list: {}", e), }; Ok(()) } aws/sdk/examples/ses/src/bin/create-contact.rs 0 → 100644 +78 −0 Original line number Diff line number Diff line /* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ use aws_types::region::ProvideRegion; use ses::{Client, Config, Error, Region}; use structopt::StructOpt; #[derive(Debug, StructOpt)] struct Opt { /// The name of the contact list. #[structopt(short, long)] contact_list: String, /// The AWS Region. #[structopt(short, long)] default_region: Option<String>, /// The email address of the contact to add to the contact list. #[structopt(short, long)] email_address: String, /// Whether to display additional runtime information #[structopt(short, long)] verbose: bool, } /// Adds a new contact to the contact list. /// # Arguments /// /// * `-c CONTACT-LIST` - The name of the contact list. /// * `-e EMAIL-ADDRESS` - The email address of the contact to add to the contact list. /// * `[-d DEFAULT-REGION]` - The region in which the client is created. /// If not supplied, uses the value of the **AWS_DEFAULT_REGION** environment variable. /// If the environment variable is not set, defaults to **us-west-2**. /// * `[-v]` - Whether to display additional information. #[tokio::main] async fn main() -> Result<(), Error> { let Opt { contact_list, default_region, email_address, verbose, } = Opt::from_args(); let region = default_region .as_ref() .map(|region| Region::new(region.clone())) .or_else(|| aws_types::region::default_provider().region()) .unwrap_or_else(|| Region::new("us-west-2")); if verbose { println!("SES client version: {}", ses::PKG_VERSION); println!("Region: {:?}", ®ion); println!("Contact list: {}", &contact_list); println!("Email address: {}", &email_address); println!(); } let conf = Config::builder().region(region).build(); let client = Client::from_conf(conf); let new_contact = client .create_contact() .contact_list_name(contact_list) .email_address(email_address) .send() .await; match new_contact { Ok(_) => println!("Created contact"), Err(e) => eprintln!("Got error attempting to create contact: {}", e), }; Ok(()) } aws/sdk/examples/ses/src/bin/email-contact-list.rs 0 → 100644 +121 −0 Original line number Diff line number Diff line /* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ use aws_types::region::ProvideRegion; use ses::model::{Body, Content, Destination, EmailContent, Message}; use ses::{Client, Config, Error, Region}; use structopt::StructOpt; #[derive(Debug, StructOpt)] struct Opt { /// The contact list containing email addresses to send the message to. #[structopt(short, long)] contact_list: String, /// The AWS Region. #[structopt(short, long)] default_region: Option<String>, /// The email address of the sender. #[structopt(short, long)] from_address: String, /// The message of the email. #[structopt(short, long)] message: String, /// The subject of the email. #[structopt(short, long)] subject: String, /// Whether to display additional runtime information #[structopt(short, long)] verbose: bool, } /// Sends a message to the email addresses in the contact list. /// # Arguments /// /// * `-f FROM-ADDRESS` - The email address of the sender. /// * `-m MESSAGE` - The email message that is sent. /// * `-s SUBJECT` - The subject of the email message. /// * `-c CONTACT-LIST` - The contact list with the email addresses of the recepients. /// * `[-d DEFAULT-REGION]` - The region in which the client is created. /// If not supplied, uses the value of the **AWS_DEFAULT_REGION** environment variable. /// If the environment variable is not set, defaults to **us-west-2**. /// * `[-v]` - Whether to display additional information. #[tokio::main] async fn main() -> Result<(), Error> { let Opt { contact_list, default_region, from_address, message, subject, verbose, } = Opt::from_args(); let region = default_region .as_ref() .map(|region| Region::new(region.clone())) .or_else(|| aws_types::region::default_provider().region()) .unwrap_or_else(|| Region::new("us-west-2")); if verbose { println!("SES client version: {}", ses::PKG_VERSION); println!("Region: {:?}", ®ion); println!("From address: {}", &from_address); println!("Contact list: {}", &contact_list); println!("Subject: {}", &subject); println!("Message: {}", &message); println!(); } let conf = Config::builder().region(region).build(); let client = Client::from_conf(conf); // Get list of email addresses from contact list. let resp = client .list_contacts() .contact_list_name(contact_list) .send() .await; let contacts = resp.unwrap().contacts.unwrap_or_default(); let cs: String = contacts .into_iter() .map(|i| i.email_address.unwrap_or_default()) .collect(); let dest = Destination::builder().to_addresses(cs).build(); let subject_content = Content::builder().data(subject).charset("UTF-8").build(); let body_content = Content::builder().data(message).charset("UTF-8").build(); let body = Body::builder().text(body_content).build(); let msg = Message::builder() .subject(subject_content) .body(body) .build(); let email_content = EmailContent::builder().simple(msg).build(); match client .send_email() .from_email_address(from_address) .destination(dest) .content(email_content) .send() .await { Ok(_) => {} Err(e) => { println!("Got an error sending email: {}", e); } } Ok(()) } aws/sdk/examples/ses/src/bin/list-contact-lists.rs 0 → 100644 +59 −0 Original line number Diff line number Diff line /* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ use aws_types::region::ProvideRegion; use ses::{Client, Config, Error, Region}; use structopt::StructOpt; #[derive(Debug, StructOpt)] struct Opt { /// The AWS Region. #[structopt(short, long)] default_region: Option<String>, /// Whether to display additional runtime information #[structopt(short, long)] verbose: bool, } /// Lists your contact lists (there should only be one). /// # Arguments /// /// * `[-d DEFAULT-REGION]` - The region in which the client is created. /// If not supplied, uses the value of the **AWS_DEFAULT_REGION** environment variable. /// If the environment variable is not set, defaults to **us-west-2**. /// * `[-v]` - Whether to display additional information. #[tokio::main] async fn main() -> Result<(), Error> { let Opt { default_region, verbose, } = Opt::from_args(); let region = default_region .as_ref() .map(|region| Region::new(region.clone())) .or_else(|| aws_types::region::default_provider().region()) .unwrap_or_else(|| Region::new("us-west-2")); if verbose { println!("SES client version: {}", ses::PKG_VERSION); println!("Region: {:?}", ®ion); println!(); } let conf = Config::builder().region(region).build(); let client = Client::from_conf(conf); let resp = client.list_contact_lists().send().await; for list in resp.unwrap().contact_lists.unwrap_or_default() { println!("{}", list.contact_list_name.as_deref().unwrap_or_default()); } Ok(()) } Loading
aws/sdk/examples/ses/Cargo.toml +8 −3 Original line number Diff line number Diff line [package] name = "ses-code-examples" version = "0.1.0" authors = ["Russell Cohen <rcoh@amazon.com>"] authors = ["Russell Cohen <rcoh@amazon.com>", "Doug Schwartz <dougsch@amazon.com>"] edition = "2018" [dependencies] ses = { package = "aws-sdk-sesv2", path = "../../build/aws-sdk/sesv2" } aws-types = { path = "../../build/aws-sdk/aws-types" } tokio = { version = "1", features = ["full"] } aws-sdk-sesv2 = { path = "../../build/aws-sdk/sesv2" } structopt = { version = "0.3", default-features = false } tracing-subscriber = "0.2.18"
aws/sdk/examples/ses/src/bin/create-contact-list.rs 0 → 100644 +71 −0 Original line number Diff line number Diff line /* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ use aws_types::region::ProvideRegion; use ses::{Client, Config, Error, Region}; use structopt::StructOpt; #[derive(Debug, StructOpt)] struct Opt { /// The name of the contact list. #[structopt(short, long)] contact_list: String, /// The AWS Region. #[structopt(short, long)] default_region: Option<String>, /// Whether to display additional runtime information #[structopt(short, long)] verbose: bool, } /// Creates a new contact list. /// # Arguments /// /// * `-c CONTACT-LIST` - The name of the contact list. /// * `[-d DEFAULT-REGION]` - The region in which the client is created. /// If not supplied, uses the value of the **AWS_DEFAULT_REGION** environment variable. /// If the environment variable is not set, defaults to **us-west-2**. /// * `[-v]` - Whether to display additional information. #[tokio::main] async fn main() -> Result<(), Error> { let Opt { contact_list, default_region, verbose, } = Opt::from_args(); let region = default_region .as_ref() .map(|region| Region::new(region.clone())) .or_else(|| aws_types::region::default_provider().region()) .unwrap_or_else(|| Region::new("us-west-2")); if verbose { println!("SES client version: {}", ses::PKG_VERSION); println!("Region: {:?}", ®ion); println!("Contact list: {}", &contact_list); println!(); } let conf = Config::builder().region(region).build(); let client = Client::from_conf(conf); let resp = client .create_contact_list() .contact_list_name(contact_list) .send() .await; match resp { Ok(_) => println!("Created contact list."), Err(e) => eprintln!("Got an error attempting to create contact list: {}", e), }; Ok(()) }
aws/sdk/examples/ses/src/bin/create-contact.rs 0 → 100644 +78 −0 Original line number Diff line number Diff line /* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ use aws_types::region::ProvideRegion; use ses::{Client, Config, Error, Region}; use structopt::StructOpt; #[derive(Debug, StructOpt)] struct Opt { /// The name of the contact list. #[structopt(short, long)] contact_list: String, /// The AWS Region. #[structopt(short, long)] default_region: Option<String>, /// The email address of the contact to add to the contact list. #[structopt(short, long)] email_address: String, /// Whether to display additional runtime information #[structopt(short, long)] verbose: bool, } /// Adds a new contact to the contact list. /// # Arguments /// /// * `-c CONTACT-LIST` - The name of the contact list. /// * `-e EMAIL-ADDRESS` - The email address of the contact to add to the contact list. /// * `[-d DEFAULT-REGION]` - The region in which the client is created. /// If not supplied, uses the value of the **AWS_DEFAULT_REGION** environment variable. /// If the environment variable is not set, defaults to **us-west-2**. /// * `[-v]` - Whether to display additional information. #[tokio::main] async fn main() -> Result<(), Error> { let Opt { contact_list, default_region, email_address, verbose, } = Opt::from_args(); let region = default_region .as_ref() .map(|region| Region::new(region.clone())) .or_else(|| aws_types::region::default_provider().region()) .unwrap_or_else(|| Region::new("us-west-2")); if verbose { println!("SES client version: {}", ses::PKG_VERSION); println!("Region: {:?}", ®ion); println!("Contact list: {}", &contact_list); println!("Email address: {}", &email_address); println!(); } let conf = Config::builder().region(region).build(); let client = Client::from_conf(conf); let new_contact = client .create_contact() .contact_list_name(contact_list) .email_address(email_address) .send() .await; match new_contact { Ok(_) => println!("Created contact"), Err(e) => eprintln!("Got error attempting to create contact: {}", e), }; Ok(()) }
aws/sdk/examples/ses/src/bin/email-contact-list.rs 0 → 100644 +121 −0 Original line number Diff line number Diff line /* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ use aws_types::region::ProvideRegion; use ses::model::{Body, Content, Destination, EmailContent, Message}; use ses::{Client, Config, Error, Region}; use structopt::StructOpt; #[derive(Debug, StructOpt)] struct Opt { /// The contact list containing email addresses to send the message to. #[structopt(short, long)] contact_list: String, /// The AWS Region. #[structopt(short, long)] default_region: Option<String>, /// The email address of the sender. #[structopt(short, long)] from_address: String, /// The message of the email. #[structopt(short, long)] message: String, /// The subject of the email. #[structopt(short, long)] subject: String, /// Whether to display additional runtime information #[structopt(short, long)] verbose: bool, } /// Sends a message to the email addresses in the contact list. /// # Arguments /// /// * `-f FROM-ADDRESS` - The email address of the sender. /// * `-m MESSAGE` - The email message that is sent. /// * `-s SUBJECT` - The subject of the email message. /// * `-c CONTACT-LIST` - The contact list with the email addresses of the recepients. /// * `[-d DEFAULT-REGION]` - The region in which the client is created. /// If not supplied, uses the value of the **AWS_DEFAULT_REGION** environment variable. /// If the environment variable is not set, defaults to **us-west-2**. /// * `[-v]` - Whether to display additional information. #[tokio::main] async fn main() -> Result<(), Error> { let Opt { contact_list, default_region, from_address, message, subject, verbose, } = Opt::from_args(); let region = default_region .as_ref() .map(|region| Region::new(region.clone())) .or_else(|| aws_types::region::default_provider().region()) .unwrap_or_else(|| Region::new("us-west-2")); if verbose { println!("SES client version: {}", ses::PKG_VERSION); println!("Region: {:?}", ®ion); println!("From address: {}", &from_address); println!("Contact list: {}", &contact_list); println!("Subject: {}", &subject); println!("Message: {}", &message); println!(); } let conf = Config::builder().region(region).build(); let client = Client::from_conf(conf); // Get list of email addresses from contact list. let resp = client .list_contacts() .contact_list_name(contact_list) .send() .await; let contacts = resp.unwrap().contacts.unwrap_or_default(); let cs: String = contacts .into_iter() .map(|i| i.email_address.unwrap_or_default()) .collect(); let dest = Destination::builder().to_addresses(cs).build(); let subject_content = Content::builder().data(subject).charset("UTF-8").build(); let body_content = Content::builder().data(message).charset("UTF-8").build(); let body = Body::builder().text(body_content).build(); let msg = Message::builder() .subject(subject_content) .body(body) .build(); let email_content = EmailContent::builder().simple(msg).build(); match client .send_email() .from_email_address(from_address) .destination(dest) .content(email_content) .send() .await { Ok(_) => {} Err(e) => { println!("Got an error sending email: {}", e); } } Ok(()) }
aws/sdk/examples/ses/src/bin/list-contact-lists.rs 0 → 100644 +59 −0 Original line number Diff line number Diff line /* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ use aws_types::region::ProvideRegion; use ses::{Client, Config, Error, Region}; use structopt::StructOpt; #[derive(Debug, StructOpt)] struct Opt { /// The AWS Region. #[structopt(short, long)] default_region: Option<String>, /// Whether to display additional runtime information #[structopt(short, long)] verbose: bool, } /// Lists your contact lists (there should only be one). /// # Arguments /// /// * `[-d DEFAULT-REGION]` - The region in which the client is created. /// If not supplied, uses the value of the **AWS_DEFAULT_REGION** environment variable. /// If the environment variable is not set, defaults to **us-west-2**. /// * `[-v]` - Whether to display additional information. #[tokio::main] async fn main() -> Result<(), Error> { let Opt { default_region, verbose, } = Opt::from_args(); let region = default_region .as_ref() .map(|region| Region::new(region.clone())) .or_else(|| aws_types::region::default_provider().region()) .unwrap_or_else(|| Region::new("us-west-2")); if verbose { println!("SES client version: {}", ses::PKG_VERSION); println!("Region: {:?}", ®ion); println!(); } let conf = Config::builder().region(region).build(); let client = Client::from_conf(conf); let resp = client.list_contact_lists().send().await; for list in resp.unwrap().contact_lists.unwrap_or_default() { println!("{}", list.contact_list_name.as_deref().unwrap_or_default()); } Ok(()) }