1+ using MimeKit ;
2+ using MimeKit . Text ;
3+ using NETCore . MailKit . Shared ;
14using System ;
25using System . Collections . Generic ;
6+ using System . Linq ;
37using System . Text ;
48using System . Threading . Tasks ;
59
@@ -23,13 +27,9 @@ public EmailService(IMailKitProvider provider)
2327 /// <param name="isHtml">is set message as html</param>
2428 public void Send ( string mailTo , string subject , string message , bool isHtml = false )
2529 {
26- using ( var client = _MailKitProvider . Client )
27- {
28-
29- }
30+ SendEmail ( mailTo , null , null , subject , message , Encoding . UTF8 , isHtml ) ;
3031 }
3132
32-
3333 /// <summary>
3434 /// send email
3535 /// </summary>
@@ -40,10 +40,7 @@ public void Send(string mailTo, string subject, string message, bool isHtml = fa
4040 /// <param name="isHtml">is set message as html</param>
4141 public void Send ( string mailTo , string subject , string message , Encoding encoding , bool isHtml = false )
4242 {
43- using ( var client = _MailKitProvider . Client )
44- {
45-
46- }
43+ SendEmail ( mailTo , null , null , subject , message , encoding , isHtml ) ;
4744 }
4845
4946 /// <summary>
@@ -57,10 +54,7 @@ public void Send(string mailTo, string subject, string message, Encoding encodin
5754 /// <param name="isHtml">is set message as html</param>
5855 public void Send ( string mailTo , string mailCc , string mailBcc , string subject , string message , bool isHtml = false )
5956 {
60- using ( var client = _MailKitProvider . Client )
61- {
62-
63- }
57+ SendEmail ( mailTo , mailCc , mailBcc , subject , message , Encoding . UTF8 , isHtml ) ;
6458 }
6559
6660 /// <summary>
@@ -75,10 +69,7 @@ public void Send(string mailTo, string mailCc, string mailBcc, string subject, s
7569 /// <param name="isHtml">is set message as html</param>
7670 public void Send ( string mailTo , string mailCc , string mailBcc , string subject , string message , Encoding encoding , bool isHtml = false )
7771 {
78- using ( var client = _MailKitProvider . Client )
79- {
80-
81- }
72+ SendEmail ( mailTo , mailCc , mailBcc , subject , message , encoding , isHtml ) ;
8273 }
8374
8475
@@ -93,10 +84,7 @@ public Task SendAsync(string mailTo, string subject, string message, bool isHtml
9384 {
9485 return Task . Factory . StartNew ( ( ) =>
9586 {
96- using ( var client = _MailKitProvider . Client )
97- {
98-
99- }
87+ SendEmail ( mailTo , null , null , subject , message , Encoding . UTF8 , isHtml ) ;
10088 } ) ;
10189 }
10290
@@ -113,10 +101,7 @@ public Task SendAsync(string mailTo, string subject, string message, Encoding en
113101 {
114102 return Task . Factory . StartNew ( ( ) =>
115103 {
116- using ( var client = _MailKitProvider . Client )
117- {
118-
119- }
104+ SendEmail ( mailTo , null , null , subject , message , encoding , isHtml ) ;
120105 } ) ;
121106 }
122107
@@ -133,10 +118,7 @@ public Task SendAsync(string mailTo, string mailCc, string mailBcc, string subje
133118 {
134119 return Task . Factory . StartNew ( ( ) =>
135120 {
136- using ( var client = _MailKitProvider . Client )
137- {
138-
139- }
121+ SendEmail ( mailTo , mailCc , mailBcc , subject , message , Encoding . UTF8 , isHtml ) ;
140122 } ) ;
141123 }
142124
@@ -154,11 +136,83 @@ public Task SendAsync(string mailTo, string mailCc, string mailBcc, string subje
154136 {
155137 return Task . Factory . StartNew ( ( ) =>
156138 {
157- using ( var client = _MailKitProvider . Client )
158- {
159-
160- }
139+ SendEmail ( mailTo , mailCc , mailBcc , subject , message , encoding , isHtml ) ;
161140 } ) ;
162141 }
142+
143+ /// <summary>
144+ ///
145+ /// </summary>
146+ /// <param name="mailTo"></param>
147+ /// <param name="mailCc"></param>
148+ /// <param name="mailBcc"></param>
149+ /// <param name="subject"></param>
150+ /// <param name="message"></param>
151+ /// <param name="encoding"></param>
152+ /// <param name="isHtml"></param>
153+ private void SendEmail ( string mailTo , string mailCc , string mailBcc , string subject , string message , Encoding encoding , bool isHtml )
154+ {
155+ var _to = new string [ 0 ] ;
156+ var _cc = new string [ 0 ] ;
157+ var _bcc = new string [ 0 ] ;
158+ if ( ! string . IsNullOrEmpty ( mailTo ) )
159+ _to = mailTo . Split ( ',' ) . Select ( x => x . Trim ( ) ) . ToArray ( ) ;
160+ if ( ! string . IsNullOrEmpty ( mailCc ) )
161+ _cc = mailCc . Split ( ',' ) . Select ( x => x . Trim ( ) ) . ToArray ( ) ;
162+ if ( ! string . IsNullOrEmpty ( mailBcc ) )
163+ _bcc = mailBcc . Split ( ',' ) . Select ( x => x . Trim ( ) ) . ToArray ( ) ;
164+
165+ Check . Argument . IsNotEmpty ( _to , nameof ( mailTo ) ) ;
166+ Check . Argument . IsNotEmpty ( message , nameof ( message ) ) ;
167+
168+ var mimeMessage = new MimeMessage ( ) ;
169+
170+ //add mail from
171+ mimeMessage . From . Add ( new MailboxAddress ( _MailKitProvider . Options . SenderName , _MailKitProvider . Options . SenderEmail ) ) ;
172+
173+ //add mail to
174+ foreach ( var to in _to )
175+ {
176+ mimeMessage . To . Add ( new MailboxAddress ( "" , to ) ) ;
177+ }
178+
179+ //add mail cc
180+ foreach ( var cc in _cc )
181+ {
182+ mimeMessage . Cc . Add ( new MailboxAddress ( "" , cc ) ) ;
183+ }
184+
185+ //add mail bcc
186+ foreach ( var bcc in _bcc )
187+ {
188+ mimeMessage . Bcc . Add ( new MailboxAddress ( "" , bcc ) ) ;
189+ }
190+
191+ //add subject
192+ mimeMessage . Subject = subject ;
193+
194+ //add email body
195+ TextPart body = null ;
196+
197+ if ( isHtml )
198+ {
199+
200+ body = new TextPart ( TextFormat . Html ) ;
201+ }
202+ else
203+ {
204+ body = new TextPart ( TextFormat . Text ) ;
205+ }
206+ //set email encoding
207+ body . SetText ( encoding , message ) ;
208+
209+ //set email body
210+ mimeMessage . Body = body ;
211+
212+ using ( var client = _MailKitProvider . Client )
213+ {
214+ client . Send ( mimeMessage ) ;
215+ }
216+ }
163217 }
164218}
0 commit comments