Exemplo n.º 1
0
        /// <summary>
        /// Sends specified message to specified smart host.
        /// </summary>
        /// <param name="smartHost">Smarthost name or IP.</param>
        /// <param name="port">SMTP port number. Default SMTP port is 25 and SSL port is 465.</param>
        /// <param name="ssl">Specifies if to connected via SSL.</param>
        /// <param name="hostName">Host name reported to SMTP server.</param>
        /// <param name="userName">SMTP user name. Note: Pass empty string if no authentication wanted.</param>
        /// <param name="password">SMTP password.</param>
        /// <param name="message">Mime message to send.</param>
        public static void QuickSendSmartHost(string smartHost,
                                              int port,
                                              bool ssl,
                                              string hostName,
                                              string userName,
                                              string password,
                                              Mime message)
        {
            string from = "";
            if (message.MainEntity.From != null)
            {
                MailboxAddress[] addresses = message.MainEntity.From.Mailboxes;
                if (addresses.Length > 0)
                {
                    from = addresses[0].EmailAddress;
                }
            }

            ArrayList recipients = new ArrayList();
            if (message.MainEntity.To != null)
            {
                MailboxAddress[] addresses = message.MainEntity.To.Mailboxes;
                foreach (MailboxAddress address in addresses)
                {
                    recipients.Add(address.EmailAddress);
                }
            }
            if (message.MainEntity.Cc != null)
            {
                MailboxAddress[] addresses = message.MainEntity.Cc.Mailboxes;
                foreach (MailboxAddress address in addresses)
                {
                    recipients.Add(address.EmailAddress);
                }
            }
            if (message.MainEntity.Bcc != null)
            {
                MailboxAddress[] addresses = message.MainEntity.Bcc.Mailboxes;
                foreach (MailboxAddress address in addresses)
                {
                    recipients.Add(address.EmailAddress);
                }
            }
            string[] to = new string[recipients.Count];
            recipients.CopyTo(to);

            MemoryStream messageStream = new MemoryStream();
            message.ToStream(messageStream);
            messageStream.Position = 0;

            // messageStream
            QuickSendSmartHost(smartHost, port, ssl, hostName, userName, password, from, to, messageStream);
        }
Exemplo n.º 2
0
        /// <summary>
        ///构造邮件消息内存流
        /// </summary>
        /// <returns>内存流</returns>
        public MemoryStream MemoryStreamMime()
        {
            MemoryStream mimeStream = new MemoryStream();

            #region 构造邮件消息体
            Mime       m          = new Mime();
            MimeEntity mainEntity = m.MainEntity;
            // Force to create From: header field
            mainEntity.ContentType = MediaType_enum.Multipart_mixed;
            mainEntity.From        = new AddressList();
            mainEntity.From.Add(new MailboxAddress(this.Name, this.CurrentUserMail));
            // Force to create To: header field
            mainEntity.To = new AddressList();
            mainEntity.ContentTransferEncoding = ContentTransferEncoding_enum.Base64;
            if (this.ReturnReceipt)
            {
                mainEntity.Header.Add(new HeaderField("Disposition-Notification-To", this.CurrentUserMail));
            }
            string[] _ArrayTo = this.To.Split(';');
            foreach (string _str_each_to in _ArrayTo)
            {
                if (_str_each_to.Trim() != "")
                {
                    string[] _array_each_to = _str_each_to.Split('@');
                    mainEntity.To.Add(new MailboxAddress(_array_each_to[0], _str_each_to));
                }
            }
            // Force to create CC: header field
            mainEntity.Cc = new AddressList();
            string[] _ArrayCC = this.CC.Split(';');
            foreach (string _str_each_cc in _ArrayCC)
            {
                if (_str_each_cc.Trim() != "")
                {
                    string[] _array_each_cc = _str_each_cc.Split('@');
                    mainEntity.Cc.Add(new MailboxAddress(_array_each_cc[0], _str_each_cc));
                }
            }
            // Force to create BCC: header field
            mainEntity.Bcc = new AddressList();
            string[] _ArrayBCC = this.BCC.Split(';');
            foreach (string _str_each_bcc in _ArrayBCC)
            {
                if (_str_each_bcc.Trim() != "")
                {
                    string[] _array_each_bcc = _str_each_bcc.Split('@');
                    mainEntity.Bcc.Add(new MailboxAddress(_array_each_bcc[0], _str_each_bcc));
                }
            }
            mainEntity.ContentTransferEncoding = ContentTransferEncoding_enum.Base64;
            mainEntity.Subject = this.Subject;
            //开始建立邮件的内容文本(默认是html邮件)
            MimeEntity textEntity = mainEntity.ChildEntities.Add();
            textEntity.ContentType             = MediaType_enum.Text_html;//MediaType_enum.Text_plain;
            textEntity.ContentTransferEncoding = ContentTransferEncoding_enum.Base64;

            //添加附件(普通)
            foreach (string _str_each_attach_ in this.Mail_Attech_File_Path)
            {
                FileInfo   fi = new FileInfo(_str_each_attach_);
                MimeEntity attachmentEntity = mainEntity.ChildEntities.Add();
                attachmentEntity.ContentType                 = MediaType_enum.Application_octet_stream;
                attachmentEntity.ContentDisposition          = ContentDisposition_enum.Attachment;
                attachmentEntity.ContentTransferEncoding     = ContentTransferEncoding_enum.Base64;
                attachmentEntity.ContentDisposition_FileName = fi.Name;
                attachmentEntity.DataFromFile(fi.FullName);
            }
            //添加内嵌附件
            foreach (string _str_each_inLine_Pic in this.Mail_Contact_Pic_Path)
            {
                //附件路径要处理
                string attpath = _str_each_inLine_Pic.Replace("%20", " ");
                attpath = attpath.Replace("file:///", "");
                attpath = attpath.Replace("file:", "");
                attpath = attpath.Replace("//", @"\\");
                attpath = attpath.Replace("/", @"\");
                FileInfo   fi = new FileInfo(attpath);
                MimeEntity attachmentEntityInLine = mainEntity.ChildEntities.Add();
                attachmentEntityInLine.ContentType                 = MediaType_enum.Image;
                attachmentEntityInLine.ContentDisposition          = ContentDisposition_enum.Inline;
                attachmentEntityInLine.ContentTransferEncoding     = ContentTransferEncoding_enum.Base64;
                attachmentEntityInLine.ContentDisposition_FileName = fi.Name;
                attachmentEntityInLine.DataFromFile(fi.FullName);
                string Cid = attachmentEntityInLine.MessageID;
                if (!string.IsNullOrEmpty(Cid))
                {
                    this.Body = this.Body.Replace(attpath, string.Format("cid:{0}", Cid.Replace("<", "").Replace(">", "")));
                }
            }
            textEntity.DataText = this.Body;
            #endregion
            m.ToStream(mimeStream);
            return(mimeStream);
        }