Ejemplos de Amazon SES API v2 que utilizan SDK Rust - Ejemplos de código de AWS SDK

Hay más AWS SDK ejemplos disponibles en el GitHub repositorio de AWS Doc SDK Examples.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejemplos de Amazon SES API v2 que utilizan SDK Rust

Los siguientes ejemplos de código muestran cómo realizar acciones e implementar escenarios comunes mediante el uso de AWS SDK for Rust with Amazon SES API v2.

Las acciones son extractos de código de programas más grandes y deben ejecutarse en contexto. Mientras las acciones muestran cómo llamar a las distintas funciones de servicio, es posible ver las acciones en contexto en los escenarios relacionados.

Los escenarios son ejemplos de código que muestran cómo llevar a cabo una tarea específica a través de llamadas a varias funciones dentro del servicio o combinado con otros Servicios de AWS.

En cada ejemplo se incluye un enlace al código de origen completo, con instrucciones de configuración y ejecución del código en el contexto.

Acciones

En el siguiente ejemplo de código, se muestra cómo utilizar CreateContact.

SDKpara Rust
nota

Hay más información GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

async fn add_contact(client: &Client, list: &str, email: &str) -> Result<(), Error> { client .create_contact() .contact_list_name(list) .email_address(email) .send() .await?; println!("Created contact"); Ok(()) }
  • Para API obtener más información, consulte CreateContactla APIreferencia AWS SDK de Rust.

En el siguiente ejemplo de código, se muestra cómo utilizar CreateContactList.

SDKpara Rust
nota

Hay más información GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

async fn make_list(client: &Client, contact_list: &str) -> Result<(), Error> { client .create_contact_list() .contact_list_name(contact_list) .send() .await?; println!("Created contact list."); Ok(()) }
  • Para API obtener más información, consulte CreateContactListla APIreferencia AWS SDK de Rust.

En el siguiente ejemplo de código, se muestra cómo utilizar CreateEmailIdentity.

SDKpara Rust
nota

Hay más información GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

match self .client .create_email_identity() .email_identity(self.verified_email.clone()) .send() .await { Ok(_) => writeln!(self.stdout, "Email identity created successfully.")?, Err(e) => match e.into_service_error() { CreateEmailIdentityError::AlreadyExistsException(_) => { writeln!( self.stdout, "Email identity already exists, skipping creation." )?; } e => return Err(anyhow!("Error creating email identity: {}", e)), }, }
  • Para API obtener más información, consulte CreateEmailIdentityla APIreferencia AWS SDK de Rust.

En el siguiente ejemplo de código, se muestra cómo utilizar CreateEmailTemplate.

SDKpara Rust
nota

Hay más información GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

let template_html = std::fs::read_to_string("../resources/newsletter/coupon-newsletter.html") .unwrap_or_else(|_| "Missing coupon-newsletter.html".to_string()); let template_text = std::fs::read_to_string("../resources/newsletter/coupon-newsletter.txt") .unwrap_or_else(|_| "Missing coupon-newsletter.txt".to_string()); // Create the email template let template_content = EmailTemplateContent::builder() .subject("Weekly Coupons Newsletter") .html(template_html) .text(template_text) .build(); match self .client .create_email_template() .template_name(TEMPLATE_NAME) .template_content(template_content) .send() .await { Ok(_) => writeln!(self.stdout, "Email template created successfully.")?, Err(e) => match e.into_service_error() { CreateEmailTemplateError::AlreadyExistsException(_) => { writeln!( self.stdout, "Email template already exists, skipping creation." )?; } e => return Err(anyhow!("Error creating email template: {}", e)), }, }
  • Para API obtener más información, consulte CreateEmailTemplatela APIreferencia AWS SDK de Rust.

En el siguiente ejemplo de código, se muestra cómo utilizar DeleteContactList.

SDKpara Rust
nota

Hay más información GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

match self .client .delete_contact_list() .contact_list_name(CONTACT_LIST_NAME) .send() .await { Ok(_) => writeln!(self.stdout, "Contact list deleted successfully.")?, Err(e) => return Err(anyhow!("Error deleting contact list: {e}")), }
  • Para API obtener más información, consulte DeleteContactListla APIreferencia AWS SDK de Rust.

En el siguiente ejemplo de código, se muestra cómo utilizar DeleteEmailIdentity.

SDKpara Rust
nota

Hay más información GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

match self .client .delete_email_identity() .email_identity(self.verified_email.clone()) .send() .await { Ok(_) => writeln!(self.stdout, "Email identity deleted successfully.")?, Err(e) => { return Err(anyhow!("Error deleting email identity: {}", e)); } }
  • Para API obtener más información, consulte DeleteEmailIdentityla APIreferencia AWS SDK de Rust.

En el siguiente ejemplo de código, se muestra cómo utilizar DeleteEmailTemplate.

SDKpara Rust
nota

Hay más información GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

match self .client .delete_email_template() .template_name(TEMPLATE_NAME) .send() .await { Ok(_) => writeln!(self.stdout, "Email template deleted successfully.")?, Err(e) => { return Err(anyhow!("Error deleting email template: {e}")); } }
  • Para API obtener más información, consulte DeleteEmailTemplatela APIreferencia AWS SDK de Rust.

En el siguiente ejemplo de código, se muestra cómo utilizar GetEmailIdentity.

SDKpara Rust
nota

Hay más información GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

Determina si se ha verificado una dirección de correo electrónico.

async fn is_verified(client: &Client, email: &str) -> Result<(), Error> { let resp = client .get_email_identity() .email_identity(email) .send() .await?; if resp.verified_for_sending_status() { println!("The address is verified"); } else { println!("The address is not verified"); } Ok(()) }
  • Para API obtener más información, consulte GetEmailIdentityla APIreferencia AWS SDK de Rust.

En el siguiente ejemplo de código, se muestra cómo utilizar ListContactLists.

SDKpara Rust
nota

Hay más información GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

async fn show_lists(client: &Client) -> Result<(), Error> { let resp = client.list_contact_lists().send().await?; println!("Contact lists:"); for list in resp.contact_lists() { println!(" {}", list.contact_list_name().unwrap_or_default()); } Ok(()) }
  • Para API obtener más información, consulte ListContactListsla APIreferencia AWS SDK de Rust.

En el siguiente ejemplo de código, se muestra cómo utilizar ListContacts.

SDKpara Rust
nota

Hay más información GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

async fn show_contacts(client: &Client, list: &str) -> Result<(), Error> { let resp = client .list_contacts() .contact_list_name(list) .send() .await?; println!("Contacts:"); for contact in resp.contacts() { println!(" {}", contact.email_address().unwrap_or_default()); } Ok(()) }
  • Para API obtener más información, consulte ListContactsla APIreferencia AWS SDK de Rust.

En el siguiente ejemplo de código, se muestra cómo utilizar SendEmail.

SDKpara Rust
nota

Hay más información GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

Envía un mensaje a todos los miembros de la lista de contactos.

async fn send_message( client: &Client, list: &str, from: &str, subject: &str, message: &str, ) -> Result<(), Error> { // Get list of email addresses from contact list. let resp = client .list_contacts() .contact_list_name(list) .send() .await?; let contacts = resp.contacts(); let cs: Vec<String> = contacts .iter() .map(|i| i.email_address().unwrap_or_default().to_string()) .collect(); let mut dest: Destination = Destination::builder().build(); dest.to_addresses = Some(cs); let subject_content = Content::builder() .data(subject) .charset("UTF-8") .build() .expect("building Content"); let body_content = Content::builder() .data(message) .charset("UTF-8") .build() .expect("building Content"); 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(); client .send_email() .from_email_address(from) .destination(dest) .content(email_content) .send() .await?; println!("Email sent to list"); Ok(()) }

Envía un mensaje a todos los miembros de la lista de contactos mediante una plantilla.

let coupons = std::fs::read_to_string("../resources/newsletter/sample_coupons.json") .unwrap_or_else(|_| r#"{"coupons":[]}"#.to_string()); let email_content = EmailContent::builder() .template( Template::builder() .template_name(TEMPLATE_NAME) .template_data(coupons) .build(), ) .build(); match self .client .send_email() .from_email_address(self.verified_email.clone()) .destination(Destination::builder().to_addresses(email.clone()).build()) .content(email_content) .list_management_options( ListManagementOptions::builder() .contact_list_name(CONTACT_LIST_NAME) .build()?, ) .send() .await { Ok(output) => { if let Some(message_id) = output.message_id { writeln!( self.stdout, "Newsletter sent to {} with message ID {}", email, message_id )?; } else { writeln!(self.stdout, "Newsletter sent to {}", email)?; } } Err(e) => return Err(anyhow!("Error sending newsletter to {}: {}", email, e)), }
  • Para API obtener más información, consulte SendEmailla APIreferencia AWS SDK de Rust.

Escenarios

El siguiente ejemplo de código muestra cómo ejecutar el flujo de trabajo del boletín de Amazon SES API v2.

SDKpara Rust
nota

Hay más información GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

match self .client .create_contact_list() .contact_list_name(CONTACT_LIST_NAME) .send() .await { Ok(_) => writeln!(self.stdout, "Contact list created successfully.")?, Err(e) => match e.into_service_error() { CreateContactListError::AlreadyExistsException(_) => { writeln!( self.stdout, "Contact list already exists, skipping creation." )?; } e => return Err(anyhow!("Error creating contact list: {}", e)), }, } match self .client .create_contact() .contact_list_name(CONTACT_LIST_NAME) .email_address(email.clone()) .send() .await { Ok(_) => writeln!(self.stdout, "Contact created for {}", email)?, Err(e) => match e.into_service_error() { CreateContactError::AlreadyExistsException(_) => writeln!( self.stdout, "Contact already exists for {}, skipping creation.", email )?, e => return Err(anyhow!("Error creating contact for {}: {}", email, e)), }, } let contacts: Vec<Contact> = match self .client .list_contacts() .contact_list_name(CONTACT_LIST_NAME) .send() .await { Ok(list_contacts_output) => { list_contacts_output.contacts.unwrap().into_iter().collect() } Err(e) => { return Err(anyhow!( "Error retrieving contact list {}: {}", CONTACT_LIST_NAME, e )) } }; let coupons = std::fs::read_to_string("../resources/newsletter/sample_coupons.json") .unwrap_or_else(|_| r#"{"coupons":[]}"#.to_string()); let email_content = EmailContent::builder() .template( Template::builder() .template_name(TEMPLATE_NAME) .template_data(coupons) .build(), ) .build(); match self .client .send_email() .from_email_address(self.verified_email.clone()) .destination(Destination::builder().to_addresses(email.clone()).build()) .content(email_content) .list_management_options( ListManagementOptions::builder() .contact_list_name(CONTACT_LIST_NAME) .build()?, ) .send() .await { Ok(output) => { if let Some(message_id) = output.message_id { writeln!( self.stdout, "Newsletter sent to {} with message ID {}", email, message_id )?; } else { writeln!(self.stdout, "Newsletter sent to {}", email)?; } } Err(e) => return Err(anyhow!("Error sending newsletter to {}: {}", email, e)), } match self .client .create_email_identity() .email_identity(self.verified_email.clone()) .send() .await { Ok(_) => writeln!(self.stdout, "Email identity created successfully.")?, Err(e) => match e.into_service_error() { CreateEmailIdentityError::AlreadyExistsException(_) => { writeln!( self.stdout, "Email identity already exists, skipping creation." )?; } e => return Err(anyhow!("Error creating email identity: {}", e)), }, } let template_html = std::fs::read_to_string("../resources/newsletter/coupon-newsletter.html") .unwrap_or_else(|_| "Missing coupon-newsletter.html".to_string()); let template_text = std::fs::read_to_string("../resources/newsletter/coupon-newsletter.txt") .unwrap_or_else(|_| "Missing coupon-newsletter.txt".to_string()); // Create the email template let template_content = EmailTemplateContent::builder() .subject("Weekly Coupons Newsletter") .html(template_html) .text(template_text) .build(); match self .client .create_email_template() .template_name(TEMPLATE_NAME) .template_content(template_content) .send() .await { Ok(_) => writeln!(self.stdout, "Email template created successfully.")?, Err(e) => match e.into_service_error() { CreateEmailTemplateError::AlreadyExistsException(_) => { writeln!( self.stdout, "Email template already exists, skipping creation." )?; } e => return Err(anyhow!("Error creating email template: {}", e)), }, } match self .client .delete_contact_list() .contact_list_name(CONTACT_LIST_NAME) .send() .await { Ok(_) => writeln!(self.stdout, "Contact list deleted successfully.")?, Err(e) => return Err(anyhow!("Error deleting contact list: {e}")), } match self .client .delete_email_identity() .email_identity(self.verified_email.clone()) .send() .await { Ok(_) => writeln!(self.stdout, "Email identity deleted successfully.")?, Err(e) => { return Err(anyhow!("Error deleting email identity: {}", e)); } } match self .client .delete_email_template() .template_name(TEMPLATE_NAME) .send() .await { Ok(_) => writeln!(self.stdout, "Email template deleted successfully.")?, Err(e) => { return Err(anyhow!("Error deleting email template: {e}")); } }