예제 #1
0
        /// <summary>
        /// Create a new e-mail envelop based on the given
        /// e-mail builder data.
        /// </summary>
        /// <param name="MailBuilder">An e-mail builder.</param>
        public EMailEnvelop(AbstractEMailBuilder MailBuilder)
        {
            MailBuilder.EncodeBodyparts();

                              // ToDo: Deep cloning!
            this._MailFrom  = new EMailAddressList(MailBuilder.From);
            this._RcptTo    = new EMailAddressList(MailBuilder.To);
            this._Mail      = new EMail(MailBuilder);
        }
예제 #2
0
        /// <summary>
        /// Create a new e-mail bodypart.
        /// </summary>
        public EMailBodypart(AbstractEMailBuilder        EMailBuilder,
                             IEnumerable<String>         Content          = null,
                             IEnumerable<EMailBodypart>  NestedBodyparts  = null)
        {
            // Only copy all e-mail headers starting with "content"...
            base._MailHeaders.AddRange(EMailBuilder.MailHeaders.Where(header => header.Key.ToLower().StartsWith("content")));

            this._MailBody.AddRange(Content);
            this._NestedBodyparts         = NestedBodyparts != null
                                                ? new List<EMailBodypart>(NestedBodyparts)
                                                : (IEnumerable<EMailBodypart>) new EMailBodypart[0];

            if (_NestedBodyparts.Count() > 0)
                this.ContentType.GenerateMIMEBoundary();
        }
예제 #3
0
 public Task <MailSentStatus> Send(AbstractEMailBuilder MailBuilder,
                                   Byte NumberOfRetries = 3,
                                   Boolean AutoStart    = true)
 {
     return(Send(MailBuilder.AsImmutable, NumberOfRetries));
 }
예제 #4
0
 public Task<MailSentStatus> Send(AbstractEMailBuilder  MailBuilder,
                                  Byte                  NumberOfRetries  = 3,
                                  Boolean               AutoStart        = true)
 {
     return Send(MailBuilder.AsImmutable, NumberOfRetries);
 }
예제 #5
0
 /// <summary>
 /// Create a new e-mail envelop based on the given sender
 /// and receiver addresses and the e-mail builder data.
 /// </summary>
 /// <param name="MailFrom">The sender(s) of the e-mail.</param>
 /// <param name="RcptTo">The receiver(s) of the e-mail.</param>
 /// <param name="MailBuilder">An e-mail builder.</param>
 /// <param name="RemoteSocket">The remote socket of the incoming SMTP connection.</param>
 public EMailEnvelop(EMailAddressList      MailFrom,
                     EMailAddressList      RcptTo,
                     AbstractEMailBuilder  MailBuilder,
                     IPSocket              RemoteSocket  = null)
 {
     this._RemoteSocket  = RemoteSocket;
     this._MailFrom      = MailFrom;
     this._RcptTo        = RcptTo;
     this._Mail          = new EMail(MailBuilder);
 }
예제 #6
0
파일: EMail.cs 프로젝트: Vanaheimr/Hermod
        /// <summary>
        /// Create a new e-mail based on the given e-mail builder.
        /// </summary>
        /// <param name="MailBuilder">An e-mail builder.</param>
        public EMail(AbstractEMailBuilder MailBuilder)
            : this(MailBuilder.
                       EncodeBodyparts().
                       // Copy only everything which is not related to the e-mail body!
                       MailHeaders.Where(header => !header.Key.ToLower().StartsWith("content")).
                       Concat(MailBuilder.Body.MailHeaders))
        {
            //ToDo: Do a real deep-copy here!
            Body  = MailBuilder.Body;

            //ToDo: Work-aroung for PGP/GPG!
            this.From = MailBuilder.From;
            this.To   = MailBuilder.To;
            this.Cc   = MailBuilder.Cc;
        }