Fix send email request body

This commit is contained in:
Alphonse Paix
2025-08-25 18:51:37 +02:00
parent dfd3300371
commit 4ce25a8136
3 changed files with 19 additions and 9 deletions

View File

@@ -62,6 +62,6 @@ mod tests {
#[quickcheck_macros::quickcheck]
fn valid_emails_are_parsed_successfully(valid_email: ValidEmailFixture) -> bool {
SubscriberEmail::parse(dbg!(valid_email.0)).is_ok()
SubscriberEmail::parse(valid_email.0).is_ok()
}
}

View File

@@ -32,8 +32,12 @@ impl EmailClient {
) -> Result<(), reqwest::Error> {
let url = self.base_url.join("v1/email").unwrap();
let request_body = SendEmailRequest {
from: self.sender.as_ref(),
to: vec![recipient.as_ref()],
from: EmailField {
email: self.sender.as_ref(),
},
to: vec![EmailField {
email: recipient.as_ref(),
}],
subject,
text: text_content,
html: html_content,
@@ -56,13 +60,18 @@ impl EmailClient {
#[derive(serde::Serialize)]
struct SendEmailRequest<'a> {
from: &'a str,
to: Vec<&'a str>,
from: EmailField<'a>,
to: Vec<EmailField<'a>>,
subject: &'a str,
text: &'a str,
html: &'a str,
}
#[derive(serde::Serialize)]
struct EmailField<'a> {
email: &'a str,
}
#[cfg(test)]
mod tests {
use std::time::Duration;

View File

@@ -20,7 +20,7 @@ fn generate_subscription_token() -> String {
#[tracing::instrument(
name = "Adding a new subscriber",
skip(connection_pool, form, email_client),
skip(connection_pool, email_client, base_url, form),
fields(
subscriber_email = %form.email,
subscriber_name = %form.name
@@ -50,18 +50,19 @@ pub async fn subscribe(
{
return StatusCode::INTERNAL_SERVER_ERROR;
}
if send_confirmation_email(
if let Err(e) = send_confirmation_email(
&email_client,
&new_subscriber,
&base_url,
&subscription_token,
)
.await
.is_err()
{
tracing::error!("Could not send confirmation email: {:?}", e);
return StatusCode::INTERNAL_SERVER_ERROR;
}
if transaction.commit().await.is_err() {
if let Err(e) = transaction.commit().await {
tracing::error!("Failed to commit transaction: {:?}", e);
return StatusCode::INTERNAL_SERVER_ERROR;
}
StatusCode::OK