3
3
using System . Collections . Generic ;
4
4
using System . Net ;
5
5
using System . Text ;
6
+ using SmtpServer . IO ;
6
7
using SmtpServer . Mail ;
7
8
using SmtpServer . Protocol ;
8
9
using SmtpServer . Text ;
@@ -19,6 +20,18 @@ static TokenReader CreateReader(string text)
19
20
return new TokenReader ( new ReadOnlySequence < byte > ( buffer , 0 , buffer . Length ) ) ;
20
21
}
21
22
23
+ static TokenReader CreateReader ( params byte [ ] [ ] buffers )
24
+ {
25
+ var segmentList = new ByteArraySegmentList ( ) ;
26
+
27
+ foreach ( var buffer in buffers )
28
+ {
29
+ segmentList . Append ( buffer ) ;
30
+ }
31
+
32
+ return new TokenReader ( segmentList . Build ( ) ) ;
33
+ }
34
+
22
35
static SmtpParser Parser => new SmtpParser ( new SmtpCommandFactory ( ) ) ;
23
36
24
37
[ Fact ]
@@ -210,6 +223,9 @@ public void CanNotMakeMail(string input)
210
223
[ InlineData ( "RCPT TO:<[email protected] >" , "cain.osullivan" , "gmail.com" ) ]
211
224
[ InlineData ( @"RCPT TO:<""Abc@def""@example.com>" , "Abc@def" , "example.com" ) ]
212
225
[ InlineData ( "RCPT TO:<pelé@example.com>" , "pelé" , "example.com" ) ]
226
+ [ InlineData ( "RCPT TO:<@example1.com:[email protected] >" , "someone" , "example.com" ) ]
227
+ [ InlineData ( "RCPT TO:<@example1.com,@example2.com:[email protected] >" , "someone" , "example.com" ) ]
228
+ [ InlineData ( "RCPT TO:<example/[email protected] >" , "example/example" , "example.com" ) ]
213
229
public void CanMakeRcpt ( string input , string user , string host )
214
230
{
215
231
// arrange
@@ -225,6 +241,22 @@ public void CanMakeRcpt(string input, string user, string host)
225
241
Assert . Equal ( host , ( ( RcptCommand ) command ) . Address . Host ) ;
226
242
}
227
243
244
+ [ Theory ]
245
+ [ InlineData ( "RCPT TO:<someone@@example.com>" ) ]
246
+ [ InlineData ( "RCPT TO:<[email protected] >" ) ]
247
+ [ InlineData ( "RCPT TO:<someone@-examplecom>" ) ]
248
+ public void CanNotMakeRcpt ( string input )
249
+ {
250
+ // arrange
251
+ var reader = CreateReader ( input ) ;
252
+
253
+ // act
254
+ var result = Parser . TryMakeRcpt ( ref reader , out _ , out _ ) ;
255
+
256
+ // assert
257
+ Assert . False ( result ) ;
258
+ }
259
+
228
260
[ Fact ]
229
261
public void CanMakeProxyUnknown ( )
230
262
{
@@ -389,6 +421,7 @@ public void CanMakeDomain()
389
421
[ InlineData ( @"[email protected] " , "$A12345" , "example.com" ) ]
390
422
[ InlineData ( @"!def!xyz%[email protected] " , "!def!xyz%abc" , "example.com" ) ]
391
423
[ InlineData ( @"[email protected] " , "_somename" , "example.com" ) ]
424
+ [ InlineData ( @"[email protected] " , "somename" , "127.0.0.1" ) ]
392
425
public void CanMakeMailbox ( string email , string user , string host )
393
426
{
394
427
// arrange
0 commit comments