Esempio n. 1
0
        // Dealing with Message Body
        public void MessageBodySerialization(delWriteData _idelwritedata)
        {
            //-------------
            // TODO: If the display name assigned value, set from, to to display name
            //       If the display name not assigned value, use the default value (From, To);
            //-------------
            _idelwritedata(SMTPDefinition.ClientCFrom + ": " + this.From);
            _idelwritedata(SMTPDefinition.ClientCTo + ": " + this.To);

            //If subject contained non-English character
            if (SMTP.Utility.StringDetectors.NonEnglishChar(this.Subject))
            {
                _idelwritedata(SMTPDefinition.ClientCSubject + ": =?" + this.EncodingName + "?B?" + SMTP.Utility.Base64Convertor.Convert(this.Subject, this.EncodingName) + "?=");
            }
            else
            {
                _idelwritedata(SMTPDefinition.ClientCSubject + ": " + this.Subject);
            }

            if (this.Cc != null && this.Cc.Trim() != "")
            {
                _idelwritedata(SMTPDefinition.ClientCCc + ": " + this.Cc);
            }
            //if file attached, use multipart/mixed to send message, or else sending message as the simplest way.
            if (this.Attachments.Count > 0 || this.EnforceMultiPart)
            {
                //-------------
                // TODO: A MIME version controller.
                //-------------
                _idelwritedata(SMTPDefinition.ClientCMIMEVersion + ": 1.0");

                _idelwritedata(SMTPDefinition.ClientCContentType + ": " + SMTPDefinition.ClientCContentTypeOption.MultipartMixed + ";");

                //Generate a boundary
                SMTPDefinition.ClientCBoundary currBoundary = new SMTPDefinition.ClientCBoundary();
                //-------------
                // TODO: boundary key generator, generate a key which never appeared in the other part of mail message.
                // Sample "01C73E90.8304A050"
                //-------------
                currBoundary.Key    = "01C73E90.8304A050";
                currBoundary.SubKey = "001";
                _idelwritedata("\t" + SMTPDefinition.ClientCBoundaryName + "=\"" + currBoundary.Boundary + "\"");

                //Display a message if user client do not support Multi-part format.
                _idelwritedata("");
                _idelwritedata("This is a multi-part message in MIME format.");
                _idelwritedata("");

                //Begin to write content.
                _idelwritedata(currBoundary.NormalBoundary);
                //-------------
                // TODO: get content type from registry and add some logical for the multi part message generator.
                //..............And the charset
                //-------------
                _idelwritedata(SMTPDefinition.ClientCContentType + ": " + SMTPDefinition.ClientCContentTypeOption.TextPlain + "; charset=\"" + this.EncodingName + "\"");

                //if require base64
                if (this.MessageEncoding == MessageEncoding.Base64 || SMTP.Utility.StringDetectors.NonEnglishChar(this.Message))
                {
                    _idelwritedata(SMTPDefinition.ClientCContentTransferEncoding + ": " + SMTPDefinition.ClientCContentTransferEncodingOption.Base64);
                    _idelwritedata("");
                    _idelwritedata(SMTP.Utility.Base64Convertor.Convert(this.Message, this.EncodingName));
                }
                else if (this.MessageEncoding == MessageEncoding.Printable)
                {
                    _idelwritedata(SMTPDefinition.ClientCContentTransferEncoding + ": " + SMTPDefinition.ClientCContentTransferEncodingOption.QuotedPrintable);
                    _idelwritedata("");
                    _idelwritedata(this.Message);
                }


                //Write file streams
                int i;
                for (i = 0; i < this.Attachments.Count; i++)
                {
                    _idelwritedata(currBoundary.NormalBoundary);

                    _idelwritedata(SMTPDefinition.ClientCContentType + ": " + SMTPDefinition.ClientCContentTypeOption.AplicationStream + ";\r\n\tname=\"" +
                                   (this.MessageEncoding == MessageEncoding.Base64 || SMTP.Utility.StringDetectors.NonEnglishChar(this.Attachments[i].FileName) ?
                                    "=?" + this.EncodingName + "?b?" + SMTP.Utility.Base64Convertor.Convert(this.Attachments[i].FileName) + "?=" :
                                    this.Attachments[i].FileName + "\""));

                    _idelwritedata(SMTPDefinition.ClientCContentTransferEncoding + ": " + SMTPDefinition.ClientCContentTransferEncodingOption.Base64);
                    //If non-english characters are found
                    if (this.MessageEncoding == MessageEncoding.Base64 || SMTP.Utility.StringDetectors.NonEnglishChar(this.Attachments[i].FileName))
                    {
                        _idelwritedata(SMTPDefinition.ClientCContentDescription + ": " + "=?" + this.EncodingName + "?b?" + SMTP.Utility.Base64Convertor.Convert(this.Attachments[i].FileName) + "?=");
                    }
                    else
                    {
                        _idelwritedata(SMTPDefinition.ClientCContentDescription + ": " + this.Attachments[i].FileName);
                    }

                    _idelwritedata(SMTPDefinition.ClientCContentDisposition + ": " + SMTPDefinition.ClientCContentDispositionOption.Attachment + "; filename=\"" +
                                   (this.MessageEncoding == MessageEncoding.Base64 || SMTP.Utility.StringDetectors.NonEnglishChar(this.Attachments[i].FileName) ?
                                    "=?" + this.EncodingName + "?b?" + SMTP.Utility.Base64Convertor.Convert(this.Attachments[i].FileName) + "?=" :
                                    this.Attachments[i].FileName + "\""));
                    _idelwritedata("");
                    _idelwritedata(this.EncodeFile(this.Attachments[i].Path));
                }

                _idelwritedata(currBoundary.EndBoundary);
            }
            //Text/plain mode
            else
            {
                //if require base64
                if (this.MessageEncoding == MessageEncoding.Base64 || SMTP.Utility.StringDetectors.NonEnglishChar(this.Message))
                {
                    _idelwritedata(SMTPDefinition.ClientCContentType + ": " + SMTPDefinition.ClientCContentTypeOption.TextPlain + "; charset=\"" + this.EncodingName + "\"");
                    _idelwritedata(SMTPDefinition.ClientCContentTransferEncoding + ": " + SMTPDefinition.ClientCContentTransferEncodingOption.Base64);
                    _idelwritedata("");
                    _idelwritedata(SMTP.Utility.Base64Convertor.Convert(this.Message, this.EncodingName));
                }
                else if (this.MessageEncoding == MessageEncoding.Printable)
                {
                    _idelwritedata("");
                    _idelwritedata(this.Message);
                }
            }
        }
Esempio n. 2
0
        // Dealing with Message Body
        public void MessageBodySerialization(delWriteData _idelwritedata)
        {
            //-------------
            // TODO: If the display name assigned value, set from, to to display name
            //       If the display name not assigned value, use the default value (From, To);
            //-------------
            _idelwritedata(SMTPDefinition.ClientCFrom + ": " + this.From);
            _idelwritedata(SMTPDefinition.ClientCTo + ": " + this.To);

            //If subject contained non-English character
            if (SMTP.Utility.StringDetectors.NonEnglishChar(this.Subject))
                _idelwritedata(SMTPDefinition.ClientCSubject + ": =?" + this.EncodingName + "?B?" + SMTP.Utility.Base64Convertor.Convert(this.Subject, this.EncodingName) + "?=");
            else
                _idelwritedata(SMTPDefinition.ClientCSubject + ": " + this.Subject);

            if (this.Cc != null && this.Cc.Trim() != "")
            {
                _idelwritedata(SMTPDefinition.ClientCCc + ": " + this.Cc);
            }
            //if file attached, use multipart/mixed to send message, or else sending message as the simplest way.
            if (this.Attachments.Count > 0 || this.EnforceMultiPart)
            {
                //-------------
                // TODO: A MIME version controller.
                //-------------
                _idelwritedata(SMTPDefinition.ClientCMIMEVersion + ": 1.0");

                _idelwritedata(SMTPDefinition.ClientCContentType + ": " + SMTPDefinition.ClientCContentTypeOption.MultipartMixed + ";");

                //Generate a boundary
                SMTPDefinition.ClientCBoundary currBoundary = new SMTPDefinition.ClientCBoundary();
                //-------------
                // TODO: boundary key generator, generate a key which never appeared in the other part of mail message.
                // Sample "01C73E90.8304A050"
                //-------------
                currBoundary.Key = "01C73E90.8304A050";
                currBoundary.SubKey = "001";
                _idelwritedata("\t" + SMTPDefinition.ClientCBoundaryName + "=\"" + currBoundary.Boundary + "\"");

                //Display a message if user client do not support Multi-part format.
                _idelwritedata("");
                _idelwritedata("This is a multi-part message in MIME format.");
                _idelwritedata("");

                //Begin to write content.
                _idelwritedata(currBoundary.NormalBoundary);
                //-------------
                // TODO: get content type from registry and add some logical for the multi part message generator.
                //..............And the charset
                //-------------
                _idelwritedata(SMTPDefinition.ClientCContentType + ": " + SMTPDefinition.ClientCContentTypeOption.TextPlain + "; charset=\"" + this.EncodingName + "\"");

                //if require base64
                if (this.MessageEncoding == MessageEncoding.Base64 || SMTP.Utility.StringDetectors.NonEnglishChar(this.Message))
                {
                    _idelwritedata(SMTPDefinition.ClientCContentTransferEncoding + ": " + SMTPDefinition.ClientCContentTransferEncodingOption.Base64);
                    _idelwritedata("");
                    _idelwritedata(SMTP.Utility.Base64Convertor.Convert(this.Message, this.EncodingName));

                }
                else if (this.MessageEncoding == MessageEncoding.Printable)
                {
                    _idelwritedata(SMTPDefinition.ClientCContentTransferEncoding + ": " + SMTPDefinition.ClientCContentTransferEncodingOption.QuotedPrintable);
                    _idelwritedata("");
                    _idelwritedata(this.Message);
                }

                //Write file streams
                int i;
                for (i = 0; i < this.Attachments.Count; i++)
                {
                    _idelwritedata(currBoundary.NormalBoundary);

                    _idelwritedata(SMTPDefinition.ClientCContentType + ": " + SMTPDefinition.ClientCContentTypeOption.AplicationStream + ";\r\n\tname=\"" +
                        (this.MessageEncoding == MessageEncoding.Base64 || SMTP.Utility.StringDetectors.NonEnglishChar(this.Attachments[i].FileName) ?
                        "=?" + this.EncodingName + "?b?" + SMTP.Utility.Base64Convertor.Convert(this.Attachments[i].FileName) + "?=" :
                        this.Attachments[i].FileName + "\""));

                    _idelwritedata(SMTPDefinition.ClientCContentTransferEncoding + ": " + SMTPDefinition.ClientCContentTransferEncodingOption.Base64);
                    //If non-english characters are found
                    if (this.MessageEncoding == MessageEncoding.Base64 || SMTP.Utility.StringDetectors.NonEnglishChar(this.Attachments[i].FileName))
                        _idelwritedata(SMTPDefinition.ClientCContentDescription + ": " + "=?" + this.EncodingName + "?b?" + SMTP.Utility.Base64Convertor.Convert(this.Attachments[i].FileName) + "?=");
                    else
                        _idelwritedata(SMTPDefinition.ClientCContentDescription + ": " + this.Attachments[i].FileName);

                    _idelwritedata(SMTPDefinition.ClientCContentDisposition + ": " + SMTPDefinition.ClientCContentDispositionOption.Attachment + "; filename=\"" +
                        (this.MessageEncoding == MessageEncoding.Base64 || SMTP.Utility.StringDetectors.NonEnglishChar(this.Attachments[i].FileName) ?
                        "=?" + this.EncodingName + "?b?" + SMTP.Utility.Base64Convertor.Convert(this.Attachments[i].FileName) + "?=" :
                        this.Attachments[i].FileName + "\""));
                    _idelwritedata("");
                    _idelwritedata(this.EncodeFile(this.Attachments[i].Path));
                }

                _idelwritedata(currBoundary.EndBoundary);
            }
            //Text/plain mode
            else
            {
                //if require base64
                if (this.MessageEncoding == MessageEncoding.Base64 || SMTP.Utility.StringDetectors.NonEnglishChar(this.Message))
                {
                    _idelwritedata(SMTPDefinition.ClientCContentType + ": " + SMTPDefinition.ClientCContentTypeOption.TextPlain + "; charset=\"" + this.EncodingName + "\"");
                    _idelwritedata(SMTPDefinition.ClientCContentTransferEncoding + ": " + SMTPDefinition.ClientCContentTransferEncodingOption.Base64);
                    _idelwritedata("");
                    _idelwritedata(SMTP.Utility.Base64Convertor.Convert(this.Message, this.EncodingName));
                }
                else if (this.MessageEncoding== MessageEncoding.Printable)
                {
                    _idelwritedata("");
                    _idelwritedata(this.Message);
                }
            }
        }