Пример #1
0
        /// このインスタンスの値を元に、SmtpContentクラスのインスタンスを生成します。
        /// <summary>
        /// Create SmtpContent instance with this instance value.
        /// このインスタンスの値を元に、SmtpContentクラスのインスタンスを生成します。
        /// </summary>
        /// <returns></returns>
        public Smtp.SmtpContent CreateSmtpContent()
        {
            Smtp.SmtpContent ct = new HigLabo.Net.Smtp.SmtpContent();
            Field            f  = null;

            for (int i = 0; i < this.Header.Count; i++)
            {
                f = this.Header[i];
                if (String.IsNullOrEmpty(f.Value) == true)
                {
                    continue;
                }
                ct[f.Key] = MailParser.DecodeFromMailHeaderLine(f.Value);
            }
            for (int i = 0; i < this.ContentType.Fields.Count; i++)
            {
                f = this.ContentType.Fields[i];
                ct.ContentType.Fields.Add(new Field(f.Key, MailParser.DecodeFromMailHeaderLine(f.Value)));
            }
            for (int i = 0; i < this.ContentDisposition.Fields.Count; i++)
            {
                f = this.ContentDisposition.Fields[i];
                ct.ContentDisposition.Fields.Add(new Field(f.Key, MailParser.DecodeFromMailHeaderLine(f.Value)));
            }
            ct.LoadText(this.BodyText);
            for (int i = 0; i < this.Contents.Count; i++)
            {
                ct.Contents.Add(this.Contents[i].CreateSmtpContent());
            }
            return(ct);
        }
Пример #2
0
        public static HigLabo.Net.Smtp.SmtpMessage ToSystemHigLaboSmtpMessage(this MailMessage msg)
        {
            var readyMessage = new HigLabo.Net.Smtp.SmtpMessage();

            readyMessage.Subject = msg.Subject;
            readyMessage.Header.Add(new HigLabo.Net.InternetTextMessage.Field("Message-ID", msg.MessageID));

            if (msg.From != null)
            {
                readyMessage.From = msg.From.ToHigLaboMailAddress();
            }
            else if (msg.Sender != null)
            {
                readyMessage.From = msg.Sender.ToHigLaboMailAddress();
            }

            foreach (var t in msg.To)
            {
                readyMessage.To.Add(t.ToHigLaboMailAddress());
            }
            foreach (var c in msg.CC)
            {
                readyMessage.Cc.Add(c.ToHigLaboMailAddress());
            }
            foreach (var b in msg.BCC)
            {
                readyMessage.Bcc.Add(b.ToHigLaboMailAddress());
            }

            readyMessage.HeaderTransferEncoding  = HigLabo.Net.Mail.TransferEncoding.Base64;
            readyMessage.ContentTransferEncoding = HigLabo.Net.Mail.TransferEncoding.Base64;

            readyMessage.IsHtml = msg.IsBodyHtml;

            readyMessage.BodyText = addMessageIDStampToBody(msg);

            foreach (var a in msg.Attachments)
            {
                var ct = new HigLabo.Net.Smtp.SmtpContent();
                ct.Name     = a.Name;
                ct.FileName = a.Name;
                ct.ContentTransferEncoding = HigLabo.Net.Mail.TransferEncoding.Base64;
                ct.LoadData(a.MimeType, a.Body);
                readyMessage.Contents.Add(ct);
                // readyMessage.Attachments.Add(a.ToSytemNetMailAttachment());
            }

            // поддържаме един и същи енкодинг на subject / body
            readyMessage.ContentEncoding = msg.Encoding.ToEncoding();
            return(readyMessage);
        }