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 );
+ }
+}