/// <summary> /// Adds an custom header to the MailMessage. /// NOTE: some SMTP servers will reject improper custom headers ///</summary> /// <param name="mailheader">MailHeader instance</param> /// <example> /// <code> /// MailMessage msg = new MailMessage("*****@*****.**", "*****@*****.**"); /// MailHeader header = new MailHeader("X-Something", "HeaderValue"); /// msg.AddCustomHeader(header); /// </code> /// </example> public void AddCustomHeader(MailHeader mailheader) { if (mailheader.name != null && mailheader.body != null) { customHeaders.Add(mailheader); } }
public void TestHeaders() { string custom1 = "customHeader"; string custom2 = "X-customeHeader2"; string headerValue = "custom value"; MailHeader testHeader = new MailHeader(custom1, headerValue); msg.AddCustomHeader(testHeader); Assertion.Assert(msg.CustomHeaders.Contains(testHeader)); msg.AddCustomHeader(custom2, headerValue); // Assertion.Assert(msg.CustomHeaders.Contains(testHeader)); }
/// <summary>Returns the MailMessage as a RFC 822 formatted message</summary> /// <example> /// <code> /// MailMessage msg = new MailMessage("*****@*****.**", "*****@*****.**"); /// msg.Body = "body"; /// msg.Subject = "subject"; /// string message = msg.ToString(); /// </code> /// </example> /// <returns>Mailmessage as RFC 822 formatted string</returns> public override string ToString() { StringBuilder sb = new StringBuilder(); if (ReplyTo.name != null && ReplyTo.name.Length != 0) { sb.Append("Reply-To: \"" + MailEncoder.ConvertHeaderToQP(ReplyTo.name, charset) + "\" <" + ReplyTo.address + ">\r\n"); } else { sb.Append("Reply-To: <" + ReplyTo.address + ">\r\n"); } if (from.name != null && from.name.Length != 0) { sb.Append("From: \"" + MailEncoder.ConvertHeaderToQP(from.name, charset) + "\" <" + from.address + ">\r\n"); } else { sb.Append("From: <" + from.address + ">\r\n"); } sb.Append("To: " + CreateAddressList(recipientList) + "\r\n"); if (ccList.Count != 0) { sb.Append("CC: " + CreateAddressList(ccList) + "\r\n"); } if (subject != null && subject.Length > 0) { StringBuilder cleanSubject = new StringBuilder(subject); cleanSubject.Replace("\r\n", null); cleanSubject.Replace("\n", null); sb.Append("Subject: " + MailEncoder.ConvertHeaderToQP(cleanSubject.ToString(), charset) + "\r\n"); } sb.Append("Date: " + DateTime.Now.ToUniversalTime().ToString("R") + "\r\n"); sb.Append(SmtpConfig.X_MAILER_HEADER + "\r\n"); if (notification) { if (ReplyTo.name != null && ReplyTo.name.Length != 0) { sb.Append("Disposition-Notification-To: " + MailEncoder.ConvertHeaderToQP(ReplyTo.name, charset) + " <" + ReplyTo.address + ">\r\n"); } else { sb.Append("Disposition-Notification-To: <" + ReplyTo.address + ">\r\n"); } } if (priority != null) { sb.Append("X-Priority: " + priority + "\r\n"); } if (customHeaders != null) { for (IEnumerator i = customHeaders.GetEnumerator(); i.MoveNext();) { MailHeader m = (MailHeader)i.Current; if (m.name.Length >= 0 && m.body.Length >= 0) { sb.Append(m.name + ":" + MailEncoder.ConvertHeaderToQP(m.body, charset) + "\r\n"); } else { // TODO: Check if below is within RFC spec. sb.Append(m.name + ":\r\n"); } } } sb.Append("MIME-Version: 1.0\r\n"); sb.Append(GetMessageBody()); return(sb.ToString()); }