void MailFrom (MimeMessage message, MailboxAddress mailbox, SmtpExtension extensions, CancellationToken cancellationToken)
{
var utf8 = (extensions & SmtpExtension.UTF8) != 0 ? " SMTPUTF8" : string.Empty;
var command = string.Format ("MAIL FROM:<{0}>{1}", mailbox.Address, utf8);
if ((extensions & SmtpExtension.BinaryMime) != 0)
command += " BODY=BINARYMIME";
else if ((extensions & SmtpExtension.EightBitMime) != 0)
command += " BODY=8BITMIME";
if ((capabilities & SmtpCapabilities.Dsn) != 0) {
var envid = GetEnvelopeId (message);
if (!string.IsNullOrEmpty (envid))
command += " ENVID=" + envid;
// TODO: RET parameter?
}
if ((capabilities & SmtpCapabilities.Pipelining) != 0) {
QueueCommand (SmtpCommand.MailFrom, command, cancellationToken);
return;
}
var response = SendCommand (command, cancellationToken);
ProcessMailFromResponse (message, mailbox, response);
}