diff --git a/src/Resend/EmailMessage.cs b/src/Resend/EmailMessage.cs index 8615561..529a4e6 100644 --- a/src/Resend/EmailMessage.cs +++ b/src/Resend/EmailMessage.cs @@ -10,8 +10,13 @@ public class EmailMessage /// /// Sender email address. /// + /// + /// Can be omitted when sending a hosted that + /// defines a default sender. + /// [JsonPropertyName( "from" )] - public EmailAddress From { get; set; } = default!; + [JsonIgnore( Condition = JsonIgnoreCondition.WhenWritingNull )] + public EmailAddress? From { get; set; } /// /// Recipient email address (list). @@ -22,8 +27,13 @@ public class EmailMessage /// /// Email subject. /// + /// + /// Can be omitted when sending a hosted that + /// defines a default subject. + /// [JsonPropertyName( "subject" )] - public string Subject { get; set; } = default!; + [JsonIgnore( Condition = JsonIgnoreCondition.WhenWritingNull )] + public string? Subject { get; set; } /// /// Cc/carbon-copy recipient email address. diff --git a/tests/Resend.Tests/EmailMessageTests.cs b/tests/Resend.Tests/EmailMessageTests.cs new file mode 100644 index 0000000..b813c63 --- /dev/null +++ b/tests/Resend.Tests/EmailMessageTests.cs @@ -0,0 +1,40 @@ +using System.Text.Json; + +namespace Resend.Tests; + +/// +public class EmailMessageTests +{ + /// + [Fact] + public void OmitsSubjectAndFromWhenNull() + { + var message = new EmailMessage() + { + To = "to@example.com", + }; + + var json = JsonSerializer.Serialize( message ); + + Assert.DoesNotContain( "\"subject\"", json ); + Assert.DoesNotContain( "\"from\"", json ); + } + + + /// + [Fact] + public void IncludesSubjectAndFromWhenSet() + { + var message = new EmailMessage() + { + From = "from@example.com", + To = "to@example.com", + Subject = "Hello", + }; + + var json = JsonSerializer.Serialize( message ); + + Assert.Contains( "\"subject\":\"Hello\"", json ); + Assert.Contains( "\"from\"", json ); + } +}