-
Notifications
You must be signed in to change notification settings - Fork 0
Examples: SMTP
Ahmed Agabani edited this page Apr 17, 2016
·
3 revisions
// Arrange
var smtpStubServer = new SmtpStubServer(IPAddress.Loopback, 5000,
() => Encoding.ASCII.GetBytes("220 SMTP StubServer\r\n"));
smtpStubServer
.When(bytes => Encoding.ASCII.GetString(bytes).StartsWith("EHLO"))
.Return(() => Encoding.ASCII.GetBytes("250-smtp.example.com Hello www.example.org [123.0.0.321]\r\n"))
.Then(() => Encoding.ASCII.GetBytes("250-SIZE 14680064\r\n"))
.Then(() => Encoding.ASCII.GetBytes("250-PIPELINING\r\n"))
.Then(() => Encoding.ASCII.GetBytes("250 HELP\r\n"));
smtpStubServer
.When(bytes => Encoding.ASCII.GetString(bytes).Equals("MAIL FROM:<jane@contoso.com>\r\n"))
.Return(() => Encoding.ASCII.GetBytes("250 Ok\r\n"));
smtpStubServer
.When(bytes => Encoding.ASCII.GetString(bytes).Equals("RCPT TO:<ben@contoso.com>\r\n"))
.Return(() => Encoding.ASCII.GetBytes("250 Ok\r\n"));
smtpStubServer
.When(bytes => Encoding.ASCII.GetString(bytes).Equals("DATA\r\n"))
.Return(() => Encoding.ASCII.GetBytes("354 End data with <CR><LF>.<CR><LF>\r\n"));
smtpStubServer
.When(bytes => Encoding.ASCII.GetString(bytes).Contains("\r\n.\r\n"))
.Return(() => Encoding.ASCII.GetBytes("250 Ok: queued as 12345\r\n"));
smtpStubServer
.When(bytes => Encoding.ASCII.GetString(bytes).Equals("QUIT\r\n"))
.Return(() => Encoding.ASCII.GetBytes("221 Bye\r\n"));
var smtpClient = new SmtpClient("127.0.0.1", 5000);
var message = new MailMessage(
new MailAddress("jane@contoso.com", "Jane Clayton"),
new MailAddress("ben@contoso.com"))
{
Body = "This is a test e-mail message sent by an application.",
BodyEncoding = Encoding.UTF8,
Subject = "test message 1",
SubjectEncoding = Encoding.UTF8
};
// Act
TestDelegate testDelegate = () => smtpClient.Send(message);
// Assert
Assert.DoesNotThrow(testDelegate);
// Cleanup
message.Dispose();
smtpClient.Dispose();
smtpStubServer.Dispose();