@@ -117,7 +117,9 @@ public async Task<HttpResponseMessage> SendEmailAsync(string emailTo, string bod
117117 }
118118
119119 // Send the email using the CHES client service
120- var emailObject = await GetEmailObjectAsync ( emailTo , body , subject , emailFrom , emailBodyType , emailTemplateName , emailCC , emailBCC ) ;
120+ var emailObject = await GetEmailObjectAsync (
121+ emailTo , body , subject , emailFrom , emailBodyType , emailTemplateName , emailCC , emailBCC , excludeTemplate : true ) ;
122+
121123 var response = await chesClientService . SendAsync ( emailObject ) ;
122124
123125 // Assuming SendAsync returns a HttpResponseMessage or equivalent:
@@ -222,7 +224,8 @@ public async Task<dynamic> BuildEmailObjectWithAttachmentsAsync(EmailLog emailLo
222224 emailLog . BodyType ,
223225 emailLog . TemplateName ,
224226 emailLog . CC ,
225- emailLog . BCC ) ;
227+ emailLog . BCC ,
228+ excludeTemplate : true ) ;
226229
227230 // Retrieve attachments from S3
228231 var attachments = await emailAttachmentService . GetAttachmentsAsync ( emailLog . Id ) ;
@@ -261,7 +264,8 @@ protected virtual async Task<dynamic> GetEmailObjectAsync(
261264 string ? emailBodyType ,
262265 string ? emailTemplateName ,
263266 string ? emailCC = null ,
264- string ? emailBCC = null )
267+ string ? emailBCC = null ,
268+ bool excludeTemplate = false )
265269 {
266270 var toList = emailTo . ParseEmailList ( ) ?? [ ] ;
267271 var ccList = emailCC . ParseEmailList ( ) ;
@@ -274,28 +278,47 @@ protected virtual async Task<dynamic> GetEmailObjectAsync(
274278
275279 emailObjectDictionary [ "body" ] = body ;
276280 emailObjectDictionary [ "bodyType" ] = emailBodyType ?? "text" ;
277- emailObjectDictionary [ "cc" ] = ccList ;
278- emailObjectDictionary [ "bcc" ] = bccList ;
279281 emailObjectDictionary [ "encoding" ] = "utf-8" ;
280282 emailObjectDictionary [ "from" ] = emailFrom ?? defaultFromAddress ?? "NoReply@gov.bc.ca" ;
281283 emailObjectDictionary [ "priority" ] = "normal" ;
282284 emailObjectDictionary [ "subject" ] = subject ;
283285 emailObjectDictionary [ "tag" ] = "tag" ;
284286 emailObjectDictionary [ "to" ] = toList ;
285- emailObjectDictionary [ "templateName" ] = emailTemplateName ;
287+
288+ // Only include cc/bcc when provided CHES API expects arrays, not null.
289+ if ( ccList != null )
290+ {
291+ emailObjectDictionary [ "cc" ] = ccList ;
292+ }
293+ if ( bccList != null )
294+ {
295+ emailObjectDictionary [ "bcc" ] = bccList ;
296+ }
297+
298+ // templateName is not part of the CHES MessageObject schema
299+ // store it on the EmailLog but don't send it to the API.
300+ if ( ! excludeTemplate )
301+ {
302+ emailObjectDictionary [ "templateName" ] = emailTemplateName ;
303+ }
286304
287305 return emailObject ;
288306 }
289307
290308 protected virtual EmailLog UpdateMappedEmailLog ( EmailLog emailLog , dynamic emailDynamicObject )
291309 {
310+ var dict = ( IDictionary < string , object ? > ) emailDynamicObject ;
292311 emailLog . Body = emailDynamicObject . body ;
293312 emailLog . Subject = emailDynamicObject . subject ;
294313 emailLog . BodyType = emailDynamicObject . bodyType ;
295314 emailLog . FromAddress = emailDynamicObject . from ;
296315 emailLog . ToAddress = string . Join ( "," , emailDynamicObject . to ) ;
297- emailLog . CC = emailDynamicObject . cc != null ? string . Join ( "," , ( IEnumerable < string > ) emailDynamicObject . cc ) : string . Empty ;
298- emailLog . BCC = emailDynamicObject . bcc != null ? string . Join ( "," , ( IEnumerable < string > ) emailDynamicObject . bcc ) : string . Empty ;
316+ emailLog . CC = dict . TryGetValue ( "cc" , out var cc ) && cc is IEnumerable < string > ccList
317+ ? string . Join ( "," , ccList )
318+ : string . Empty ;
319+ emailLog . BCC = dict . TryGetValue ( "bcc" , out var bcc ) && bcc is IEnumerable < string > bccList
320+ ? string . Join ( "," , bccList )
321+ : string . Empty ;
299322 emailLog . TemplateName = emailDynamicObject . templateName ;
300323 return emailLog ;
301324 }
0 commit comments