示例#1
0
        void MailFrom(MailboxAddress mailbox, SmtpExtension extensions, CancellationToken cancellationToken)
        {
            var command = GetMailFromCommand(mailbox, extensions);

            if ((Capabilities & SmtpCapabilities.Pipelining) != 0)
            {
                QueueCommand(SmtpCommand.MailFrom, command);
                return;
            }

            ProcessMailFromResponse(SendCommand(command, cancellationToken), mailbox);
        }
示例#2
0
        static string GetMailFromCommand(MailboxAddress mailbox, SmtpExtension extensions)
        {
            if ((extensions & SmtpExtension.BinaryMime) != 0)
            {
                return(string.Format("MAIL FROM:<{0}> BODY=BINARYMIME", mailbox.Address));
            }

            if ((extensions & SmtpExtension.EightBitMime) != 0)
            {
                return(string.Format("MAIL FROM:<{0}> BODY=8BITMIME", mailbox.Address));
            }

            return(string.Format("MAIL FROM:<{0}>", mailbox.Address));
        }
示例#3
0
        static string GetMailFromCommand(MailboxAddress mailbox, SmtpExtension extensions)
        {
            if ((extensions & SmtpExtension.BinaryMime) != 0)
                return string.Format ("MAIL FROM:<{0}> BODY=BINARYMIME", mailbox.Address);

            if ((extensions & SmtpExtension.EightBitMime) != 0)
                return string.Format ("MAIL FROM:<{0}> BODY=8BITMIME", mailbox.Address);

            return string.Format ("MAIL FROM:<{0}>", mailbox.Address);
        }
示例#4
0
        void MailFrom(MailboxAddress mailbox, SmtpExtension extensions, CancellationToken cancellationToken)
        {
            var command = GetMailFromCommand (mailbox, extensions);

            if ((capabilities & SmtpCapabilities.Pipelining) != 0) {
                QueueCommand (SmtpCommand.MailFrom, command);
                return;
            }

            ProcessMailFromResponse (SendCommand (command, cancellationToken), mailbox);
        }
示例#5
0
		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;
			}

			ProcessMailFromResponse (SendCommand (command, cancellationToken), mailbox);
		}
示例#6
0
			protected override void VisitMimePart (MimePart entity)
			{
				switch (entity.ContentTransferEncoding) {
				case ContentEncoding.EightBit:
					// if the server supports the 8BITMIME extension, use it...
					if ((Capabilities & SmtpCapabilities.EightBitMime) != 0) {
						SmtpExtensions |= SmtpExtension.EightBitMime;
					} else {
						SmtpExtensions |= SmtpExtension.BinaryMime;
					}
					break;
				case ContentEncoding.Binary:
					SmtpExtensions |= SmtpExtension.BinaryMime;
					break;
				}
			}