.net 发送邮件 头值中找到无效字符
来源:互联网 发布:股票数据分析方法 编辑:程序博客网 时间:2024/06/11 09:03
利用System.Net.Mail写发送邮件的功能
其实代码比较简单
但是总碰到如下症状:
症状是:调用 SmtpClient.Send 方法后,出现 System.FormatException,
英文消息为“An invalid character was found in header value.”
中文消息是:“邮件标头中找到无效字符”。
经查阅很多资料,发现
原因是在 SmtpClient.Send 之前曾经调用过该 MailMessage 对象的 From, To, Cc 等字段的 ToString 方法。很有可能的情形是,你尝试在发信前留下日志时,“无意间”调用到了。而微软的工程师在此处出现了一些失误,最终产生了该错误消息,具体情况请参看上面链接中的文章。
P.S. 当然还会有其他原因可能导致此问题,比如微软知识库里给出的一种原因是因为收件人显示名称中包含有引号。
是编码问题了.试了很多 最终在网上查到使用Encoding chtEnc = Encoding.BigEndianUnicode;可以解决
也查到一些使用其他的。可能是看自己的需求选择编码方式了。
private void btnSend_Click(object sender, EventArgs e)
{
XmlDocument xmlDoc = new XmlDocument();
Encoding chtEnc = Encoding.BigEndianUnicode;
MailMessage mail = new MailMessage();
string toAddress = tbxMailTo.Text.ToString();
//设置邮件的发件人
//Pass:如果不想显示自己的邮箱地址,这里可以填符合mail格式的任意名称,真正发mail的用户不在这里设定,这个仅仅只做显示用
mail.From=new MailAddress("yuehongsun@gmail.com", "小月",chtEnc);
mail.To.Add(new MailAddress(toAddress, "企业", chtEnc));
//mail.CC.Add(new MailAddress("Manage@hotmail.com", "尊敬的领导"));
mail.Subject = tbxMailSubject.Text;
mail.SubjectEncoding = chtEnc;
mail.Body = "谢谢您在百忙之中查阅!/r/n祝:身体健康!";
mail.BodyEncoding = System.Text.Encoding.UTF8;
mail.IsBodyHtml = true;
//设置邮件的发送级别
mail.Priority = MailPriority.Normal;
mail.Attachments.Add(new Attachment(filePath));
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
SmtpClient client = new SmtpClient();
//设置用于 SMTP 事务的主机的名称,填IP地址也可以了
client.Host = "smtp.gmail.com";
//设置用于 SMTP 事务的端口,默认的是 25
//client.Port = 25;
client.UseDefaultCredentials = false;
//这里才是真正的邮箱登陆名和密码,比如我的邮箱地址是 yuehongsun@gmail, 我的用户名为 yuehongsun ,我的密码是 password
client.Credentials = new System.Net.NetworkCredential("yuehongsun", "password");
client.DeliveryMethod = SmtpDeliveryMethod.Network;
//都定义完了,正式发送
try
{
client.EnableSsl = true;
client.Send(mail);
MessageBox.Show("邮件已发出,请确认!", "提示");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "异常");
}
}
- .net 发送邮件 头值中找到无效字符
- .net 发送邮件 头值中找到无效字符
- smtp发送邮件失败-邮件标头找到无效字符
- 在邮件标头中找到无效的字符:“周”
- 采用SmtpClient方式发送邮件,如果服务器的名字中有中文,会报"在邮件标头中找到无效的字符”"错误
- 使用.NET发送邮件
- 使用.NET发送邮件
- 使用.NET发送邮件
- 使用.NET发送邮件
- .net发送接收邮件
- 使用.NET发送邮件
- asp.net发送邮件
- ASP.NET发送邮件
- .NET下发送邮件
- asp.net发送邮件
- .net 2.0 邮件发送
- .net中发送邮件
- c#.net发送邮件
- 一种方便调试的打印语句宏定义
- Spring对Log4J的增强
- Linux 下的驱动程序与内核的编译
- his&racs&lis&ris
- SQL Server 中的身份安全
- .net 发送邮件 头值中找到无效字符
- MSSQL2K 将表数据生成INSERT SQL脚本的存储过程
- java实现快速排序
- 几种压缩算法原理介绍
- 如何察看Solaris系统的内存大小及使用情况?
- 取得MAC地址的4种方法
- _beginthread还是CreateThread
- python:ip地址转换到数字
- 虚拟机之比较,lua 5 的实现