/// <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); }
/// <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); }