Skip to content

Commit d830ac8

Browse files
Merge pull request #47 from IowaComputerGurus/feature/update-for-new-features
Added custom from address support
2 parents 952d853 + abdb7d0 commit d830ac8

File tree

8 files changed

+177
-12
lines changed

8 files changed

+177
-12
lines changed

.github/workflows/ci-build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ jobs:
2424
dotnet-version: 8.0.x
2525

2626
- name: Install GitVersion
27-
uses: gittools/actions/gitversion/setup@v3.1.11
27+
uses: gittools/actions/gitversion/setup@v4.1.0
2828
with:
29-
versionSpec: '6.0.5'
29+
versionSpec: '6.4.0'
3030

3131
- name: Determine Version
3232
id: gitversion
33-
uses: gittools/actions/gitversion/execute@v3.1.11
33+
uses: gittools/actions/gitversion/execute@v4.1.0
3434
with:
3535
useConfigFile: true
3636
- name: Set up JDK 17

.github/workflows/release-build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ jobs:
2323
dotnet-version: 8.0.x
2424

2525
- name: Install GitVersion
26-
uses: gittools/actions/gitversion/setup@v3.1.11
26+
uses: gittools/actions/gitversion/setup@v4.1.0
2727
with:
28-
versionSpec: '6.0.5'
28+
versionSpec: '6.4.0'
2929

3030
- name: Determine Version
3131
id: gitversion
32-
uses: gittools/actions/gitversion/execute@v3.1.11
32+
uses: gittools/actions/gitversion/execute@v4.1.0
3333
with:
3434
useConfigFile: true
3535

GitVersion.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ branches:
1111
pull-request:
1212
regex: (pull|pull\-requests|pr)[/-]
1313
label: 'pr'
14-
label-number-pattern: '[/-](?<number>\d+)[-/]'
1514
increment: Patch
1615
is-release-branch: false
1716
source-branches: []

src/NetCore.Utilities.Email.SendGrid.Tests/NetCore.Utilities.Email.SendGrid.Tests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313
</PackageReference>
1414
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
1515
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
16-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
16+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
1717
<PackageReference Include="Moq" Version="4.20.72" />
1818
<PackageReference Include="xunit" Version="2.9.3" />
19-
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.1">
19+
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.4">
2020
<PrivateAssets>all</PrivateAssets>
2121
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
2222
</PackageReference>

src/NetCore.Utilities.Email.SendGrid.Tests/SmtpServiceTests.cs

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,5 +262,115 @@ public void SendWithReplyToAsync_ShouldPassOptionalTemplateName_ToMessageMethods
262262
//Assets
263263
_sendGridMessageBuilderMock.Verify();
264264
}
265+
266+
[Fact]
267+
public void SendWithCustomFromEmailAsync_ShouldSend_DefaultingFromAddress()
268+
{
269+
//Arrange
270+
var from = "[email protected]";
271+
var fromName = "Custom Sender";
272+
var to = "[email protected]";
273+
var subject = "test";
274+
var message = "message";
275+
var returnMessage = new SendGridMessage();
276+
_sendGridMessageBuilderMock
277+
.Setup(s => s.CreateMessage(from, fromName, to, null, subject, message, "")).Returns(returnMessage).Verifiable();
278+
279+
//Act
280+
_service.SendWithCustomFromEmailAsync(from, fromName, to, subject, message);
281+
282+
//Verify
283+
_sendGridMessageBuilderMock.Verify();
284+
}
285+
286+
[Fact]
287+
public void SendWithCustomFromEmailAsync_WithCCRecipients_ShouldSend_DefaultingFromAddress()
288+
{
289+
//Arrange
290+
var from = "[email protected]";
291+
var fromName = "Custom Sender";
292+
var to = "[email protected]";
293+
var cc = new List<string> { "[email protected]" };
294+
var subject = "test";
295+
var message = "message";
296+
var returnMessage = new SendGridMessage();
297+
_sendGridMessageBuilderMock
298+
.Setup(s => s.CreateMessage(from, fromName, to, cc, subject, message, "")).Returns(returnMessage).Verifiable();
299+
300+
//Act
301+
_service.SendWithCustomFromEmailAsync(from, fromName, to, cc, subject, message);
302+
303+
//Verify
304+
_sendGridMessageBuilderMock.Verify();
305+
}
306+
307+
[Fact]
308+
public void SendWithCustomFromEmailAsync_ShouldPassOptionalTemplateName_ToMessageMethods()
309+
{
310+
//Arrange
311+
var from = "[email protected]";
312+
var fromName = "Custom Sender";
313+
var to = "[email protected]";
314+
var cc = new List<string> { "[email protected]" };
315+
var subject = "test";
316+
var message = "message";
317+
var requestedTemplate = "Test";
318+
var returnMessage = new SendGridMessage();
319+
_sendGridMessageBuilderMock
320+
.Setup(s => s.CreateMessage(from, fromName, to, cc, subject, message, requestedTemplate)).Returns(returnMessage).Verifiable();
321+
322+
//Act
323+
_service.SendWithCustomFromEmailAsync(from, fromName, to, cc, subject, message, null, requestedTemplate);
324+
325+
//Verify
326+
_sendGridMessageBuilderMock.Verify();
327+
}
328+
329+
[Fact]
330+
public void SendWithCustomFromEmailAndAttachmentAsync_ShouldSend_DefaultingFromAddress()
331+
{
332+
//Arrange
333+
var from = "[email protected]";
334+
var fromName = "Custom Sender";
335+
var to = "[email protected]";
336+
var cc = new List<string> { "[email protected]" };
337+
var subject = "test";
338+
var fileContent = Encoding.ASCII.GetBytes("Testing");
339+
var fileName = "test.txt";
340+
var message = "message";
341+
var returnMessage = new SendGridMessage();
342+
_sendGridMessageBuilderMock
343+
.Setup(s => s.CreateMessageWithAttachment(from, fromName, to, cc, fileContent, fileName, subject, message, "")).Returns(returnMessage).Verifiable();
344+
345+
//Act
346+
_service.SendWithCustomFromEmailAndAttachmentAsync(from, fromName, to, cc, subject, fileContent, fileName, message, null);
347+
348+
//Verify
349+
_sendGridMessageBuilderMock.Verify();
350+
}
351+
352+
[Fact]
353+
public void SendWithCustomFromEmailAndAttachmentAsync_ShouldPassOptionalTemplateName_ToMessageMethods()
354+
{
355+
//Arrange
356+
var from = "[email protected]";
357+
var fromName = "Custom Sender";
358+
var to = "[email protected]";
359+
var cc = new List<string> { "[email protected]" };
360+
var subject = "test";
361+
var fileContent = Encoding.ASCII.GetBytes("Testing");
362+
var fileName = "test.txt";
363+
var message = "message";
364+
var requestedTemplate = "Test";
365+
var returnMessage = new SendGridMessage();
366+
_sendGridMessageBuilderMock
367+
.Setup(s => s.CreateMessageWithAttachment(from, fromName, to, cc, fileContent, fileName, subject, message, requestedTemplate)).Returns(returnMessage).Verifiable();
368+
369+
//Act
370+
_service.SendWithCustomFromEmailAndAttachmentAsync(from, fromName, to, cc, subject, fileContent, fileName, message, null, requestedTemplate);
371+
372+
//Verify
373+
_sendGridMessageBuilderMock.Verify();
374+
}
265375
}
266376
}

src/NetCore.Utilities.Email.SendGrid/NetCore.Utilities.Email.SendGrid.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<EmbedUntrackedSources>true</EmbedUntrackedSources>
2626
</PropertyGroup>
2727

28-
<PropertyGroup Condition="'$GITHUB_ACTIONS)' == 'true'">
28+
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
2929
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
3030
</PropertyGroup>
3131

@@ -34,7 +34,7 @@
3434
</ItemGroup>
3535

3636
<ItemGroup>
37-
<PackageReference Include="icg.netcore.utilities.email" Version="7.0.0" />
37+
<PackageReference Include="icg.netcore.utilities.email" Version="8.1.0" />
3838
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
3939
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
4040
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />

src/NetCore.Utilities.Email.SendGrid/SendGridMessageBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ public SendGridMessage CreateMessage(string from, string fromName, string to, IE
120120
}
121121
catch (Exception ex)
122122
{
123-
_logger.LogWarning(ex, $"Unable to add {item} to email copy list");
123+
_logger.LogWarning(ex, "Unable to add {item} to email copy list", item);
124124
}
125125
}
126126
}

src/NetCore.Utilities.Email.SendGrid/SendGridService.cs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,4 +185,60 @@ public Task<bool> SendMessageWithAttachmentAsync(string toAddress, IEnumerable<s
185185
//Send
186186
return _sender.SendMessage(apiKey, toSend);
187187
}
188+
189+
/// <inheritdoc />
190+
public Task<bool> SendWithCustomFromEmailAsync(string fromAddress, string fromName, string toAddress, string subject, string bodyHtml)
191+
{
192+
return SendWithCustomFromEmailAsync(fromAddress, fromName, toAddress, null, subject, bodyHtml, null, "", "");
193+
}
194+
195+
/// <inheritdoc />
196+
public Task<bool> SendWithCustomFromEmailAsync(string fromAddress, string fromName, string toAddress, string subject, string bodyHtml, List<KeyValuePair<string, string>> tokens)
197+
{
198+
return SendWithCustomFromEmailAsync(fromAddress, fromName, toAddress, null, subject, bodyHtml, tokens, "", "");
199+
}
200+
201+
/// <inheritdoc />
202+
public Task<bool> SendWithCustomFromEmailAsync(string fromAddress, string fromName, string toAddress, IEnumerable<string> ccAddressList, string subject, string bodyHtml)
203+
{
204+
return SendWithCustomFromEmailAsync(fromAddress, fromName, toAddress, ccAddressList, subject, bodyHtml, null, "", "");
205+
}
206+
207+
/// <inheritdoc />
208+
public Task<bool> SendWithCustomFromEmailAsync(string fromAddress, string fromName, string toAddress, IEnumerable<string> ccAddressList, string subject, string bodyHtml, List<KeyValuePair<string, string>> tokens)
209+
{
210+
return SendWithCustomFromEmailAsync(fromAddress, fromName, toAddress, ccAddressList, subject, bodyHtml, tokens, "", "");
211+
}
212+
213+
/// <inheritdoc />
214+
public Task<bool> SendWithCustomFromEmailAsync(string fromAddress, string fromName, string toAddress, IEnumerable<string> ccAddressList, string subject, string bodyHtml, List<KeyValuePair<string, string>> tokens, string templateName, string senderKeyName = "")
215+
{
216+
if (tokens != null)
217+
foreach (var item in tokens)
218+
bodyHtml = bodyHtml.Replace(item.Key, item.Value);
219+
220+
var toSend = _messageBuilder.CreateMessage(fromAddress, fromName, toAddress, ccAddressList, subject, bodyHtml, templateName);
221+
222+
var apiKey = _serviceOptions.SendGridApiKey;
223+
if (!string.IsNullOrEmpty(senderKeyName))
224+
apiKey = _serviceOptions.AdditionalApiKeys[senderKeyName];
225+
226+
return _sender.SendMessage(apiKey, toSend);
227+
}
228+
229+
/// <inheritdoc />
230+
public Task<bool> SendWithCustomFromEmailAndAttachmentAsync(string fromAddress, string fromName, string toAddress, IEnumerable<string> ccAddressList, string subject, byte[] fileContent, string fileName, string bodyHtml, List<KeyValuePair<string, string>> tokens, string templateName = "", string senderKeyName = "")
231+
{
232+
if (tokens != null)
233+
foreach (var item in tokens)
234+
bodyHtml = bodyHtml.Replace(item.Key, item.Value);
235+
236+
var toSend = _messageBuilder.CreateMessageWithAttachment(fromAddress, fromName, toAddress, ccAddressList, fileContent, fileName, subject, bodyHtml, templateName);
237+
238+
var apiKey = _serviceOptions.SendGridApiKey;
239+
if (!string.IsNullOrEmpty(senderKeyName))
240+
apiKey = _serviceOptions.AdditionalApiKeys[senderKeyName];
241+
242+
return _sender.SendMessage(apiKey, toSend);
243+
}
188244
}

0 commit comments

Comments
 (0)