Skip to content

Commit d92c214

Browse files
committed
Add ability to add custom_args into req payload
1 parent eb6d73c commit d92c214

File tree

4 files changed

+19
-4
lines changed

4 files changed

+19
-4
lines changed

api/notification-service.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,15 @@ components:
268268
type: array
269269
items:
270270
type: string
271+
customArgs:
272+
type: object
273+
additionalProperties:
274+
type: string
275+
description: |
276+
Custom arguments are key/value pairs passed to the mail provider.
277+
These will be passed through to the mail provider and can be used to provide additional information about the message.
278+
For example, if the mail provider is SendGrid, these will be passed through as custom_args.
279+
271280
272281
SendBulkMailRequest:
273282
type: object

internal/mail/mail.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func SendBulkMail(toList []server.EmailRecipient, from server.EmailSender, cc []
2929
// Create goroutines for each send
3030
for _, to := range toList {
3131
go func(to server.EmailRecipient) {
32-
response, err := SendIndividualMail([]server.EmailRecipient{to}, from, cc, bcc, headers, message, client, []string{})
32+
response, err := SendIndividualMail([]server.EmailRecipient{to}, from, cc, bcc, headers, message, client, []string{}, map[string]string{})
3333
responseChannel <- BulkSendAttempt{to.Address, response, err}
3434
wg.Done()
3535
}(to)
@@ -42,7 +42,7 @@ func SendBulkMail(toList []server.EmailRecipient, from server.EmailSender, cc []
4242
}
4343

4444
// SendIndividualMail sends an email message
45-
func SendIndividualMail(to []server.EmailRecipient, from server.EmailSender, cc []server.EmailRecipient, bcc []server.EmailRecipient, headers map[string]string, message server.MailMessage, client Client, tags []string) (*rest.Response, error) {
45+
func SendIndividualMail(to []server.EmailRecipient, from server.EmailSender, cc []server.EmailRecipient, bcc []server.EmailRecipient, headers map[string]string, message server.MailMessage, client Client, tags []string, customArgs map[string]string) (*rest.Response, error) {
4646
sendMessage := sendgridMail.NewV3Mail()
4747

4848
sendMessage.SetFrom(sendgridMail.NewEmail(from.Name, from.Address))
@@ -82,6 +82,12 @@ func SendIndividualMail(to []server.EmailRecipient, from server.EmailSender, cc
8282
sendMessage.AddCategories(tags...)
8383
}
8484

85+
if len(customArgs) > 0 {
86+
for key, value := range customArgs {
87+
sendMessage.SetCustomArg(key, value)
88+
}
89+
}
90+
8591
return client.Send(sendMessage)
8692
}
8793

internal/mail/mail_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func TestSendMail(t *testing.T) {
3939
return m.Headers["X-Test-Header"] == headers["X-Test-Header"]
4040
})
4141
client.On("Send", headersMatcher).Return(nil, nil)
42-
mail.SendIndividualMail(toList, from, cc, bcc, headers, message, &client, []string{})
42+
mail.SendIndividualMail(toList, from, cc, bcc, headers, message, &client, []string{}, map[string]string{})
4343
client.AssertNumberOfCalls(t, "Send", 1)
4444
}
4545

internal/service/api_email_service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func (s *EmailApiService) SendEmail(ctx context.Context, sendMailRequest server.
4343

4444
client := sendgrid.NewSendClient(s.config.SendgridAPIKey)
4545

46-
response, err := mail.SendIndividualMail(sendMailRequest.ToAddresses, sendMailRequest.FromAddress, sendMailRequest.CcAddresses, sendMailRequest.BccAddresses, sendMailRequest.Headers, sendMailRequest.Message, client, sendMailRequest.Tags)
46+
response, err := mail.SendIndividualMail(sendMailRequest.ToAddresses, sendMailRequest.FromAddress, sendMailRequest.CcAddresses, sendMailRequest.BccAddresses, sendMailRequest.Headers, sendMailRequest.Message, client, sendMailRequest.Tags, sendMailRequest.CustomArgs)
4747

4848
if err != nil {
4949
zap.S().Errorf("Error sending mail: %v", response)

0 commit comments

Comments
 (0)