[英]c# MailMessage custom headers - using System.Net.Mail;
这是我测试MailMessage标头的方法:
private void Send_Email(string smtp_server, int port, string display_name, string from, string to, string subject, string html_body, string sender_email, string sender_password)
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress(from, display_name, Encoding.UTF8);
mail.To.Add(to);
mail.SubjectEncoding = Encoding.UTF8;
mail.Subject = subject;
mail.Headers.Add("Reply-To", "Reply-To__ <" + from + ">");
mail.Headers.Add("Sender", from);
mail.Headers.Add("Return-Path", from);
mail.Headers.Add("MIME-Version", "1.0");
string boundary = Guid.NewGuid().ToString();
mail.Headers.Add("Content-Type", "multipart/mixed; boundary=--" + boundary);
//mail.Headers.Add("", Environment.NewLine);
//mail.Headers.Add("", Environment.NewLine);
//mail.Headers.Add("", "--" + boundary);
//mail.Headers.Add("Content-Type", "text/html; charset=utf-8");
//mail.Headers.Add("Content-Transfer-Encoding", "base64");
//mail.Headers.Add("", Environment.NewLine);
//var bytes = Encoding.UTF8.GetBytes(html_body);
//var base64 = Convert.ToBase64String(bytes);
//mail.Headers.Add("", base64.ToString());
//mail.Headers.Add("", "--" + boundary);
SmtpClient smtp = new SmtpClient();
smtp.UseDefaultCredentials = true;
//smtp.Credentials = new System.Net.NetworkCredential(sender_email, sender_password);
smtp.Host = smtp_server;
smtp.Port = port;
smtp.Timeout = 60000;
smtp.SendCompleted += (s, e) =>
{
if (e.Cancelled)
{
MessageBox.Show("sending email was canceled");
}
if (e.Error != null)
{
MessageBox.Show("sending email was failed -> Error : " + e.Error.ToString());
}
else
{
MessageBox.Show("email was sent successfully");
}
mail.Dispose();
};
try
{
smtp.SendAsync(mail, null);
}
catch (System.Net.Mail.SmtpException exp)
{
MessageBox.Show("sending email was failed, SmtpException -> Error : " + exp.ToString());
mail.Dispose();
}
}
在PHP中你的手是免费的,可以很好地制作标题和邮件结构,
看看这个例子:
http://www.sanwebe.com/2011/01/send-php-mail-with-attachment
我想在.Net中做一些类似php的东西,并使用标题使我的邮件结构。
但我的代码中的错误与这些行有关:
mail.Headers.Add(“”,“blo blo blo”);
和错误 :
名称部分不能为空...
我如何绕过该错误并使用标题创建我的邮件的每个和平:
例如 - > 身体 - 附件 - 等
我认为这属于RFC 2822, https ://tools.ietf.org/html/rfc2822#section-2.2:
2.2。 标题字段
标题字段是由字段名称组成的行,后跟冒号(“:”),后跟字段正文,并由CRLF终止。 字段名称必须由可打印的US-ASCII字符组成(即,值为33到126之间的字符,包括端点),除了
结肠。 字段主体可以由任何US-ASCII字符组成,
CR和LF除外。 但是,字段正文可能包含CRLF
用于标题“折叠”和“展开”,如2.2.3节所述。 所有字段主体必须符合本标准第3节和第4节中描述的语法。
似乎不允许空字符串。
使用5小时的SMTP超时过多。 范围5秒到60秒更合理。
来自MSDN :
不应该使用标题属性添加以下邮件标题的列表,并使用标题属性将被丢弃或覆盖这些头设置的任何值在发送消息时:
Bcc Cc Content-ID Content-Location Content-Transfer-Encoding Content-Type Date From Importance MIME-Version Priority Reply-To Sender To X-Priority
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.