public void TestArgumentExceptions() { using (var client = new SmtpClient()) { var credentials = new NetworkCredential("username", "password"); var socket = new Socket(SocketType.Stream, ProtocolType.Tcp); var message = CreateSimpleMessage(); var sender = message.From.Mailboxes.FirstOrDefault(); var recipients = message.To.Mailboxes.ToList(); var options = FormatOptions.Default; var empty = new MailboxAddress[0]; // Connect Assert.Throws <ArgumentNullException> (() => client.Connect((Uri)null)); Assert.Throws <ArgumentNullException> (async() => await client.ConnectAsync((Uri)null)); Assert.Throws <ArgumentNullException> (() => client.Connect(null, 25, false)); Assert.Throws <ArgumentNullException> (async() => await client.ConnectAsync(null, 25, false)); Assert.Throws <ArgumentException> (() => client.Connect(string.Empty, 25, false)); Assert.Throws <ArgumentException> (async() => await client.ConnectAsync(string.Empty, 25, false)); Assert.Throws <ArgumentOutOfRangeException> (() => client.Connect("host", -1, false)); Assert.Throws <ArgumentOutOfRangeException> (async() => await client.ConnectAsync("host", -1, false)); Assert.Throws <ArgumentNullException> (() => client.Connect(null, 25, SecureSocketOptions.None)); Assert.Throws <ArgumentNullException> (async() => await client.ConnectAsync(null, 25, SecureSocketOptions.None)); Assert.Throws <ArgumentException> (() => client.Connect(string.Empty, 25, SecureSocketOptions.None)); Assert.Throws <ArgumentException> (async() => await client.ConnectAsync(string.Empty, 25, SecureSocketOptions.None)); Assert.Throws <ArgumentOutOfRangeException> (() => client.Connect("host", -1, SecureSocketOptions.None)); Assert.Throws <ArgumentOutOfRangeException> (async() => await client.ConnectAsync("host", -1, SecureSocketOptions.None)); Assert.Throws <ArgumentNullException> (() => client.Connect(null, "host", 25, SecureSocketOptions.None)); Assert.Throws <ArgumentException> (() => client.Connect(socket, "host", 25, SecureSocketOptions.None)); // Authenticate Assert.Throws <ArgumentNullException> (() => client.Authenticate(null)); Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync(null)); Assert.Throws <ArgumentNullException> (() => client.Authenticate(null, "password")); Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync(null, "password")); Assert.Throws <ArgumentNullException> (() => client.Authenticate("username", null)); Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync("username", null)); Assert.Throws <ArgumentNullException> (() => client.Authenticate(null, credentials)); Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync(null, credentials)); Assert.Throws <ArgumentNullException> (() => client.Authenticate(Encoding.UTF8, null)); Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync(Encoding.UTF8, null)); Assert.Throws <ArgumentNullException> (() => client.Authenticate(null, "username", "password")); Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync(null, "username", "password")); Assert.Throws <ArgumentNullException> (() => client.Authenticate(Encoding.UTF8, null, "password")); Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync(Encoding.UTF8, null, "password")); Assert.Throws <ArgumentNullException> (() => client.Authenticate(Encoding.UTF8, "username", null)); Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync(Encoding.UTF8, "username", null)); // Send Assert.Throws <ArgumentNullException> (() => client.Send(null)); Assert.Throws <ArgumentNullException> (() => client.Send(null, message)); Assert.Throws <ArgumentNullException> (() => client.Send(options, null)); Assert.Throws <ArgumentNullException> (() => client.Send(message, null, recipients)); Assert.Throws <ArgumentNullException> (() => client.Send(message, sender, null)); Assert.Throws <InvalidOperationException> (() => client.Send(message, sender, empty)); Assert.Throws <ArgumentNullException> (() => client.Send(null, message, sender, recipients)); Assert.Throws <ArgumentNullException> (() => client.Send(options, message, null, recipients)); Assert.Throws <ArgumentNullException> (() => client.Send(options, message, sender, null)); Assert.Throws <InvalidOperationException> (() => client.Send(options, message, sender, empty)); Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(null)); Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(null, message)); Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(options, null)); Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(message, null, recipients)); Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(message, sender, null)); Assert.Throws <InvalidOperationException> (async() => await client.SendAsync(message, sender, empty)); Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(null, message, sender, recipients)); Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(options, message, null, recipients)); Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(options, message, sender, null)); Assert.Throws <InvalidOperationException> (async() => await client.SendAsync(options, message, sender, empty)); // Expand Assert.Throws <ArgumentNullException> (() => client.Expand(null)); Assert.Throws <ArgumentException> (() => client.Expand(string.Empty)); Assert.Throws <ArgumentException> (() => client.Expand("line1\r\nline2")); Assert.Throws <ArgumentNullException> (async() => await client.ExpandAsync(null)); Assert.Throws <ArgumentException> (async() => await client.ExpandAsync(string.Empty)); Assert.Throws <ArgumentException> (async() => await client.ExpandAsync("line1\r\nline2")); // Verify Assert.Throws <ArgumentNullException> (() => client.Verify(null)); Assert.Throws <ArgumentException> (() => client.Verify(string.Empty)); Assert.Throws <ArgumentException> (() => client.Verify("line1\r\nline2")); Assert.Throws <ArgumentNullException> (async() => await client.VerifyAsync(null)); Assert.Throws <ArgumentException> (async() => await client.VerifyAsync(string.Empty)); Assert.Throws <ArgumentException> (async() => await client.VerifyAsync("line1\r\nline2")); } }