Skip to content

Commit 3a8d4b2

Browse files
authored
Merge pull request myloveCc#14 from dmitrydvm/master
Add optional sender info for SendAsync method
2 parents 72511a9 + 3850be8 commit 3a8d4b2

4 files changed

Lines changed: 68 additions & 32 deletions

File tree

‎src/NETCore.MailKit/Core/EmailService.cs‎

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
using MimeKit;
22
using MimeKit.Text;
3+
using NETCore.MailKit.Infrastructure.Internal;
34
using NETCore.MailKit.Shared;
4-
using System;
5-
using System.Collections.Generic;
65
using System.Linq;
76
using System.Text;
87
using System.Threading.Tasks;
@@ -25,9 +24,10 @@ public EmailService(IMailKitProvider provider)
2524
/// <param name="subject">subject</param>
2625
/// <param name="message">email message</param>
2726
/// <param name="isHtml">is set message as html</param>
28-
public void Send(string mailTo, string subject, string message, bool isHtml = false)
27+
/// <param name="sender">from</param>
28+
public void Send(string mailTo, string subject, string message, bool isHtml = false, SenderInfo sender = null)
2929
{
30-
SendEmail(mailTo, null, null, subject, message, Encoding.UTF8, isHtml);
30+
SendEmail(mailTo, null, null, subject, message, Encoding.UTF8, isHtml, sender);
3131
}
3232

3333
/// <summary>
@@ -38,9 +38,10 @@ public void Send(string mailTo, string subject, string message, bool isHtml = fa
3838
/// <param name="message">email message</param>
3939
/// <param name="encoding">email message encoding</param>
4040
/// <param name="isHtml">is set message as html</param>
41-
public void Send(string mailTo, string subject, string message, Encoding encoding, bool isHtml = false)
41+
/// <param name="sender">from</param>
42+
public void Send(string mailTo, string subject, string message, Encoding encoding, bool isHtml = false, SenderInfo sender = null)
4243
{
43-
SendEmail(mailTo, null, null, subject, message, encoding, isHtml);
44+
SendEmail(mailTo, null, null, subject, message, encoding, isHtml, sender);
4445
}
4546

4647
/// <summary>
@@ -52,9 +53,10 @@ public void Send(string mailTo, string subject, string message, Encoding encodin
5253
/// <param name="subject">subject</param>
5354
/// <param name="message">email message</param>
5455
/// <param name="isHtml">is set message as html</param>
55-
public void Send(string mailTo, string mailCc, string mailBcc, string subject, string message, bool isHtml = false)
56+
/// <param name="sender">from</param>
57+
public void Send(string mailTo, string mailCc, string mailBcc, string subject, string message, bool isHtml = false, SenderInfo sender = null)
5658
{
57-
SendEmail(mailTo, mailCc, mailBcc, subject, message, Encoding.UTF8, isHtml);
59+
SendEmail(mailTo, mailCc, mailBcc, subject, message, Encoding.UTF8, isHtml, sender);
5860
}
5961

6062
/// <summary>
@@ -67,9 +69,10 @@ public void Send(string mailTo, string mailCc, string mailBcc, string subject, s
6769
/// <param name="message">email message</param>
6870
/// <param name="encoding">email message encoding</param>
6971
/// <param name="isHtml">is set message as html</param>
70-
public void Send(string mailTo, string mailCc, string mailBcc, string subject, string message, Encoding encoding, bool isHtml = false)
72+
/// <param name="sender">from</param>
73+
public void Send(string mailTo, string mailCc, string mailBcc, string subject, string message, Encoding encoding, bool isHtml = false, SenderInfo sender = null)
7174
{
72-
SendEmail(mailTo, mailCc, mailBcc, subject, message, encoding, isHtml);
75+
SendEmail(mailTo, mailCc, mailBcc, subject, message, encoding, isHtml, sender);
7376
}
7477

7578

@@ -80,11 +83,12 @@ public void Send(string mailTo, string mailCc, string mailBcc, string subject, s
8083
/// <param name="subject">subject</param>
8184
/// <param name="message">email message</param>
8285
/// <param name="isHtml">is set message as html</param>
83-
public Task SendAsync(string mailTo, string subject, string message, bool isHtml = false)
86+
/// <param name="sender">from</param>
87+
public Task SendAsync(string mailTo, string subject, string message, bool isHtml = false, SenderInfo sender = null)
8488
{
8589
return Task.Factory.StartNew(() =>
8690
{
87-
SendEmail(mailTo, null, null, subject, message, Encoding.UTF8, isHtml);
91+
SendEmail(mailTo, null, null, subject, message, Encoding.UTF8, isHtml, sender);
8892
});
8993
}
9094

@@ -96,12 +100,12 @@ public Task SendAsync(string mailTo, string subject, string message, bool isHtml
96100
/// <param name="message">email message</param>
97101
/// <param name="encoding">email message encoding</param>
98102
/// <param name="isHtml">is set message as html</param>
99-
100-
public Task SendAsync(string mailTo, string subject, string message, Encoding encoding, bool isHtml = false)
103+
/// <param name="sender">from</param>
104+
public Task SendAsync(string mailTo, string subject, string message, Encoding encoding, bool isHtml = false, SenderInfo sender = null)
101105
{
102106
return Task.Factory.StartNew(() =>
103107
{
104-
SendEmail(mailTo, null, null, subject, message, encoding, isHtml);
108+
SendEmail(mailTo, null, null, subject, message, encoding, isHtml, sender);
105109
});
106110
}
107111

@@ -114,11 +118,12 @@ public Task SendAsync(string mailTo, string subject, string message, Encoding en
114118
/// <param name="subject">subject</param>
115119
/// <param name="message">email message</param>
116120
/// <param name="isHtml">is set message as html</param>
117-
public Task SendAsync(string mailTo, string mailCc, string mailBcc, string subject, string message, bool isHtml = false)
121+
/// <param name="sender">from</param>
122+
public Task SendAsync(string mailTo, string mailCc, string mailBcc, string subject, string message, bool isHtml = false, SenderInfo sender = null)
118123
{
119124
return Task.Factory.StartNew(() =>
120125
{
121-
SendEmail(mailTo, mailCc, mailBcc, subject, message, Encoding.UTF8, isHtml);
126+
SendEmail(mailTo, mailCc, mailBcc, subject, message, Encoding.UTF8, isHtml, sender);
122127
});
123128
}
124129

@@ -132,11 +137,12 @@ public Task SendAsync(string mailTo, string mailCc, string mailBcc, string subje
132137
/// <param name="message">email message</param>
133138
/// <param name="encoding">email message encoding</param>
134139
/// <param name="isHtml">is set message as html</param>
135-
public Task SendAsync(string mailTo, string mailCc, string mailBcc, string subject, string message, Encoding encoding, bool isHtml = false)
140+
/// <param name="sender">from</param>
141+
public Task SendAsync(string mailTo, string mailCc, string mailBcc, string subject, string message, Encoding encoding, bool isHtml = false, SenderInfo sender = null)
136142
{
137143
return Task.Factory.StartNew(() =>
138144
{
139-
SendEmail(mailTo, mailCc, mailBcc, subject, message, encoding, isHtml);
145+
SendEmail(mailTo, mailCc, mailBcc, subject, message, encoding, isHtml, sender);
140146
});
141147
}
142148

@@ -150,7 +156,8 @@ public Task SendAsync(string mailTo, string mailCc, string mailBcc, string subje
150156
/// <param name="message"></param>
151157
/// <param name="encoding"></param>
152158
/// <param name="isHtml"></param>
153-
private void SendEmail(string mailTo, string mailCc, string mailBcc, string subject, string message, Encoding encoding, bool isHtml)
159+
/// <param name="sender">from</param>
160+
private void SendEmail(string mailTo, string mailCc, string mailBcc, string subject, string message, Encoding encoding, bool isHtml, SenderInfo sender = null)
154161
{
155162
var _to = new string[0];
156163
var _cc = new string[0];
@@ -168,7 +175,14 @@ private void SendEmail(string mailTo, string mailCc, string mailBcc, string subj
168175
var mimeMessage = new MimeMessage();
169176

170177
//add mail from
171-
mimeMessage.From.Add(new MailboxAddress(_MailKitProvider.Options.SenderName, _MailKitProvider.Options.SenderEmail));
178+
if (!string.IsNullOrEmpty(sender?.SenderEmail) && !string.IsNullOrEmpty(sender?.SenderName))
179+
{
180+
mimeMessage.From.Add(new MailboxAddress(sender.SenderName, sender.SenderEmail));
181+
}
182+
else
183+
{
184+
mimeMessage.From.Add(new MailboxAddress(_MailKitProvider.Options.SenderName, _MailKitProvider.Options.SenderEmail));
185+
}
172186

173187
//add mail to
174188
foreach (var to in _to)
@@ -196,7 +210,6 @@ private void SendEmail(string mailTo, string mailCc, string mailBcc, string subj
196210

197211
if (isHtml)
198212
{
199-
200213
body = new TextPart(TextFormat.Html);
201214
}
202215
else

‎src/NETCore.MailKit/Core/IEmailService.cs‎

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System;
2-
using System.Collections.Generic;
1+
using NETCore.MailKit.Infrastructure.Internal;
32
using System.Text;
43
using System.Threading.Tasks;
54

@@ -14,7 +13,8 @@ public interface IEmailService
1413
/// <param name="subject">subject</param>
1514
/// <param name="message">email message</param>
1615
/// <param name="isHtml">is set message as html</param>
17-
void Send(string mailTo, string subject, string message, bool isHtml = false);
16+
/// <param name="sender">from</param>
17+
void Send(string mailTo, string subject, string message, bool isHtml = false, SenderInfo sender = null);
1818

1919
/// <summary>
2020
/// send email
@@ -24,7 +24,8 @@ public interface IEmailService
2424
/// <param name="message">email message</param>
2525
/// <param name="encoding">email message encoding</param>
2626
/// <param name="isHtml">is set message as html</param>
27-
void Send(string mailTo, string subject, string message, Encoding encoding, bool isHtml = false);
27+
/// <param name="sender">from</param>
28+
void Send(string mailTo, string subject, string message, Encoding encoding, bool isHtml = false, SenderInfo sender = null);
2829

2930

3031
/// <summary>
@@ -36,7 +37,8 @@ public interface IEmailService
3637
/// <param name="subject">subject</param>
3738
/// <param name="message">email message</param>
3839
/// <param name="isHtml">is set message as html</param>
39-
void Send(string mailTo, string mailCc, string mailBcc, string subject, string message, bool isHtml = false);
40+
/// <param name="sender">from</param>
41+
void Send(string mailTo, string mailCc, string mailBcc, string subject, string message, bool isHtml = false, SenderInfo sender = null);
4042

4143
/// <summary>
4244
/// send email
@@ -48,7 +50,8 @@ public interface IEmailService
4850
/// <param name="message">email message</param>
4951
/// <param name="encoding">email message encoding</param>
5052
/// <param name="isHtml">is set message as html</param>
51-
void Send(string mailTo, string mailCc, string mailBcc, string subject, string message, Encoding encoding, bool isHtml = false);
53+
/// <param name="sender">from</param>
54+
void Send(string mailTo, string mailCc, string mailBcc, string subject, string message, Encoding encoding, bool isHtml = false, SenderInfo sender = null);
5255

5356

5457
/// <summary>
@@ -58,7 +61,8 @@ public interface IEmailService
5861
/// <param name="subject">subject</param>
5962
/// <param name="message">email message</param>
6063
/// <param name="isHtml">is set message as html</param>
61-
Task SendAsync(string mailTo, string subject, string message, bool isHtml = false);
64+
/// <param name="sender">from</param>
65+
Task SendAsync(string mailTo, string subject, string message, bool isHtml = false, SenderInfo sender = null);
6266

6367
/// <summary>
6468
/// send email async
@@ -68,7 +72,8 @@ public interface IEmailService
6872
/// <param name="message">email message</param>
6973
/// <param name="encoding">email message encoding</param>
7074
/// <param name="isHtml">is set message as html</param>
71-
Task SendAsync(string mailTo, string subject, string message, Encoding encoding, bool isHtml = false);
75+
/// <param name="sender">from</param>
76+
Task SendAsync(string mailTo, string subject, string message, Encoding encoding, bool isHtml = false, SenderInfo sender = null);
7277

7378

7479
/// <summary>
@@ -80,7 +85,8 @@ public interface IEmailService
8085
/// <param name="subject">subject</param>
8186
/// <param name="message">email message</param>
8287
/// <param name="isHtml">is set message as html</param>
83-
Task SendAsync(string mailTo, string mailCc, string mailBcc, string subject, string message, bool isHtml = false);
88+
/// <param name="sender">from</param>
89+
Task SendAsync(string mailTo, string mailCc, string mailBcc, string subject, string message, bool isHtml = false, SenderInfo sender = null);
8490

8591
/// <summary>
8692
/// send email async
@@ -92,6 +98,7 @@ public interface IEmailService
9298
/// <param name="message">email message</param>
9399
/// <param name="encoding">email message encoding</param>
94100
/// <param name="isHtml">is set message as html</param>
95-
Task SendAsync(string mailTo, string mailCc, string mailBcc, string subject, string message, Encoding encoding, bool isHtml = false);
101+
/// <param name="sender">from</param>
102+
Task SendAsync(string mailTo, string mailCc, string mailBcc, string subject, string message, Encoding encoding, bool isHtml = false, SenderInfo sender = null);
96103
}
97104
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace NETCore.MailKit.Infrastructure.Internal
2+
{
3+
public class SenderInfo
4+
{
5+
public string SenderName { get; set; }
6+
7+
public string SenderEmail { get; set; }
8+
}
9+
}

‎src/NETCore.MailKit/NETCore.MailKit.csproj‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

3+
<PropertyGroup Label="Globals">
4+
<SccProjectName>SAK</SccProjectName>
5+
<SccProvider>SAK</SccProvider>
6+
<SccAuxPath>SAK</SccAuxPath>
7+
<SccLocalPath>SAK</SccLocalPath>
8+
</PropertyGroup>
9+
310
<PropertyGroup>
411
<TargetFramework>netstandard2.0</TargetFramework>
512
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>

0 commit comments

Comments
 (0)