/// <summary> /// 发送邮件 /// </summary> /// <param name="mm">邮件对象</param> /// <param name="from">发送人</param> /// <param name="to">接收人</param> private void send(Mail_Message mm, ASObject from, string[] to) { using (MemoryStreamEx stream = new MemoryStreamEx(32000)) { MIME_Encoding_EncodedWord headerwordEncoder = new MIME_Encoding_EncodedWord(MIME_EncodedWordEncoding.Q, Encoding.UTF8); mm.ToStream(stream, headerwordEncoder, Encoding.UTF8); stream.Position = 0; SMTP_Client.QuickSendSmartHost(null, from.getString("send_address", "stmp.sina.com"), from.getInt("send_port", 25), from.getBoolean("is_send_ssl", false), from.getString("account"), PassUtil.Decrypt(from.getString("password")), from.getString("account"), to, stream); } }
/// <summary> /// 发送阅读回折邮件 /// </summary> /// <param name="sHtmlText">邮件内容</param> /// <param name="from">发送人</param> /// <param name="to">接收人</param> public void sendReceiptMail(string sHtmlText, string subject, ASObject from, string[] to) { using (MemoryStreamEx stream = new MemoryStreamEx(32000)) { Mail_Message m = new Mail_Message(); m.MimeVersion = "1.0"; m.Date = DateTime.Now; m.MessageID = MIME_Utils.CreateMessageID(); m.Subject = subject; StringBuilder sb = new StringBuilder(); foreach (string p in to) { if (sb.Length > 0) sb.Append(","); sb.Append(p); } m.To = Mail_t_AddressList.Parse(sb.ToString()); //--- multipart/alternative ----------------------------------------------------------------------------------------- MIME_h_ContentType contentType_multipartAlternative = new MIME_h_ContentType(MIME_MediaTypes.Multipart.alternative); contentType_multipartAlternative.Param_Boundary = Guid.NewGuid().ToString().Replace('-', '.'); MIME_b_MultipartAlternative multipartAlternative = new MIME_b_MultipartAlternative(contentType_multipartAlternative); m.Body = multipartAlternative; //--- text/plain ---------------------------------------------------------------------------------------------------- MIME_Entity entity_text_plain = new MIME_Entity(); MIME_b_Text text_plain = new MIME_b_Text(MIME_MediaTypes.Text.plain); entity_text_plain.Body = text_plain; text_plain.SetText(MIME_TransferEncodings.QuotedPrintable, Encoding.UTF8, sHtmlText); multipartAlternative.BodyParts.Add(entity_text_plain); //--- text/html ------------------------------------------------------------------------------------------------------ MIME_Entity entity_text_html = new MIME_Entity(); MIME_b_Text text_html = new MIME_b_Text(MIME_MediaTypes.Text.html); entity_text_html.Body = text_html; text_html.SetText(MIME_TransferEncodings.QuotedPrintable, Encoding.UTF8, sHtmlText); multipartAlternative.BodyParts.Add(entity_text_html); MIME_Encoding_EncodedWord headerwordEncoder = new MIME_Encoding_EncodedWord(MIME_EncodedWordEncoding.Q, Encoding.UTF8); m.ToStream(stream, headerwordEncoder, Encoding.UTF8); stream.Position = 0; SMTP_Client.QuickSendSmartHost(null, from.getString("send_address", "stmp.sina.com"), from.getInt("send_port", 25), from.getBoolean("is_send_ssl", false), from.getString("account"), PassUtil.Decrypt(from.getString("password")), from.getString("account"), to, stream); } }
/// <summary> /// Sends message by using specified smart host. /// </summary> /// <param name="host">Host name or IP address.</param> /// <param name="port">Host port.</param> /// <param name="ssl">Specifies if connected via SSL.</param> /// <param name="message">Mail message to send.</param> /// <exception cref="ArgumentNullException">Is raised when argument <b>host</b> or <b>message</b> is null.</exception> /// <exception cref="ArgumentException">Is raised when any of the method arguments has invalid value.</exception> /// <exception cref="SMTP_ClientException">Is raised when SMTP server returns error.</exception> public static void QuickSendSmartHost(string host,int port,bool ssl,Mail_Message message) { if(message == null){ throw new ArgumentNullException("message"); } string from = ""; if(message.From != null && message.From.Count > 0){ from = ((Mail_t_Mailbox)message.From[0]).Address; } List<string> recipients = new List<string>(); if(message.To != null){ Mail_t_Mailbox[] addresses = message.To.Mailboxes; foreach(Mail_t_Mailbox address in addresses){ recipients.Add(address.Address); } } if(message.Cc != null){ Mail_t_Mailbox[] addresses = message.Cc.Mailboxes; foreach(Mail_t_Mailbox address in addresses){ recipients.Add(address.Address); } } if(message.Bcc != null){ Mail_t_Mailbox[] addresses = message.Bcc.Mailboxes; foreach(Mail_t_Mailbox address in addresses){ recipients.Add(address.Address); } // We must hide BCC message.Bcc.Clear(); } foreach(string recipient in recipients){ MemoryStream ms = new MemoryStream(); message.ToStream(ms,new MIME_Encoding_EncodedWord(MIME_EncodedWordEncoding.Q,Encoding.UTF8),Encoding.UTF8); ms.Position = 0; QuickSendSmartHost(null,host,port,ssl,null,null,from,new string[]{recipient},ms); } }