NOOP is required in this place - client uses so called PIPELINING - which means that several commands are send at once.
This greatly improves performance as there is no need to wait for a server response for each command separately.
NOOP command is used to force server to send all outstanding responses, before actual message is being transferred.
NOOP command itself is not the reason that triggers this 5s delay.
If you want to turn off PIPELINING you can use EnablePipelining property:
using (Smtp client = new Smtp())
{
client.ConnectSSL("smtp.example.com");
client.UseBestLogin("user", "password");
client.Configuration.EnablePipelining = false;
ISendMessageResult result = client.SendMessage(mail);
client.Close();
}
Smtp client will wait for a response for each command separately:
C: MAIL FROM:alice@example.com
C: RCPT TO:bob@example.com
C: NOOP
S: 250 2.1.0 Sender OK
S: 250 2.1.5 Recipient OK
S: 250 2.0.0 OK
-vs-
C: MAIL FROM:alice@example.com
S: 250 2.1.0 Sender OK
C: RCPT TO:bob@example.com
S: 250 2.1.5 Recipient OK