邮件发送失败

z812183667 2009-12-12 11:10:25
private void SendMailByNet()
{
mailMessage = new MailMessage() ;
////设置收信人地址
mailMessage.To.Add(txt_To.Text);
//设置发信人
mailMessage.From = new System.Net.Mail.MailAddress("253631203@qq.com");
//发信主题
mailMessage.Subject = txt_Subject.Text;
//发信内容
mailMessage.IsBodyHtml = true;
mailMessage.Body = txt_Msg.Text;
//设置此电子邮件的优先级
mailMessage.Priority = System.Net.Mail.MailPriority.Normal;
//设置编码格式
mailMessage.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312");
mailMessage.SubjectEncoding = System.Text.Encoding.GetEncoding("GB2312");


//发送邮件到smpt服务器上
smptClient = new SmtpClient("smtp.qq.com");
smptClient.Credentials = new System.Net.NetworkCredential(mailMessage.From.Address, "z456123");
smptClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smptClient.Send(mailMessage);
}

异常信息:
在邮件标头中找到无效的字符。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.FormatException: 在邮件标头中找到无效的字符。

源错误:


行 51: smptClient.Credentials = new System.Net.NetworkCredential(mailMessage.From.Address, "z456123");
行 52: smptClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
行 53: smptClient.Send(mailMessage);
行 54: }
行 55: //利用System.Web.Mail;


源文件: E:\MyClientService\MyTest\SendEmail.aspx.cs 行: 53

各位高手帮帮忙吧,急用呢!
...全文
433 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
limii 2009-12-14
  • 打赏
  • 举报
回复
up
z812183667 2009-12-14
  • 打赏
  • 举报
回复
谢谢大家了,终于成功了!
z812183667 2009-12-14
  • 打赏
  • 举报
回复
都不行啊!
好是不行啊!
宝_爸 2009-12-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xupeihuagudulei 的回复:]
可能pop3没设置对
[/Quote]

pop3是接收邮件的协议
xupeihuagudulei 2009-12-12
  • 打赏
  • 举报
回复
可能pop3没设置对
宝_爸 2009-12-12
  • 打赏
  • 举报
回复
我这里没有安装net1.1,因此没法测试,
不过应该加入Credentials 相关的东西。
不幸的是,我搜索不到相关内容。
z812183667 2009-12-12
  • 打赏
  • 举报
回复

MailMessage mail = new MailMessage();
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "253631203@qq.com");
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "z456123");
mail.BodyFormat = MailFormat.Text;
mail.BodyEncoding = Encoding.UTF8;
mail.From = "253631203@qq.com";
mail.To = txt_To.Text;
mail.Subject = txt_Subject.Text;
mail.Body = txt_Msg.Text ;

SmtpMail.SmtpServer = "smtp.qq.com";
SmtpMail.Send(mail);
我这样写对吗?
宝_爸 2009-12-12
  • 打赏
  • 举报
回复
不过你最好先搞清楚原因是7楼说的还是5楼说的。
宝_爸 2009-12-12
  • 打赏
  • 举报
回复
using System;
using System.Web.Mail;

namespace SendMail
{
class usage
{
public void DisplayUsage()
{
Console.WriteLine("Usage SendMail.exe <to> <from> <subject> <body>");
Console.WriteLine("<to> the addresses of the email recipients");
Console.WriteLine("<from> your email address");
Console.WriteLine("<subject> subject of your email");
Console.WriteLine("<body> the text of the email");
Console.WriteLine("Example:");
Console.WriteLine("SendMail.exe SomeOne@Contoso.com;SomeOther@Contoso.com Me@contoso.com Hi hello");
}
}


class Start
{
// The main entry point for the application.
[STAThread]
static void Main(string[] args)
{
try
{
try
{
MailMessage Message = new MailMessage();
Message.To = args[0];
Message.From = args[1];
Message.Subject = args[2];
Message.Body = args[3];

try
{
SmtpMail.SmtpServer = "your mail server name goes here";
SmtpMail.Send(Message);
}
catch(System.Web.HttpException ehttp)
{
Console.WriteLine("{0}", ehttp.Message);
Console.WriteLine("Here is the full error message output");
Console.Write("{0}", ehttp.ToString());
}
}
catch(IndexOutOfRangeException)
{
usage use = new usage();
use.DisplayUsage();
}
}
catch(System.Exception e)
{
Console.WriteLine("Unknown Exception occurred {0}", e.Message);
Console.WriteLine("Here is the Full Message output");
Console.WriteLine("{0}", e.ToString());
}
}
}
}


参考:http://msdn.microsoft.com/zh-cn/library/system.web.mail.smtpmail(VS.80).aspx
z812183667 2009-12-12
  • 打赏
  • 举报
回复
对啊System.Net .Mail.Message用这个发送邮件就是有个BUG,
但是怎么避免啊!
但是我不会用System.Web.Mail这个发送邮件,谁有源码给我到邮箱里面吧,谢谢了,zhangyonghe.2009@163.com
  • 打赏
  • 举报
回复
这个是System.Net .Mail.Message 类的一个错误
System.Net.Mail 类发送电子邮件,收到 FormatException 消息。 当收件人电子邮件地址包含双引号,则会发生此问题
微软的官方网站,也报出了解决方案,不过还是用System.Web.Mail 发邮件比较实在点。
http://support.microsoft.com/kb/947323/zh-cn
宝_爸 2009-12-12
  • 打赏
  • 举报
回复
lz密码泄露了:)
宝_爸 2009-12-12
  • 打赏
  • 举报
回复
我这里可以,至少不是在smptClient.Credentials = new System.Net.NetworkCredential(mailMessage.From.Address, "z456123");这句抛出的异常

Google了下,发现可能和主机名有关系,我的机器名士英文的

参考:
http://social.microsoft.com/Forums/zh-CN/2212/thread/303e6b4e-1e70-4e5d-9037-3ad58ad88fdf
fuda_1985 2009-12-12
  • 打赏
  • 举报
回复
一般情况下,是因为mail的设置不对。。
z812183667 2009-12-12
  • 打赏
  • 举报
回复
上面的代码编译通过了啊!运行的时候才报的错误
z456123这个是我的密码啊!
kong0609 2009-12-12
  • 打赏
  • 举报
回复
mailMessage.To.Add(txt_To.Text);
没有add吧
还有 z456123这个应该是发送人的用户名吧换找个试试
253631203
smptClient.Credentials = new System.Net.NetworkCredential(mailMessage.From.Address, "z456123"); 在看看,是英文的吗
skylovejjp 2009-12-12
  • 打赏
  • 举报
回复
不懂,帮顶
zcxverygood123456 2009-12-12
  • 打赏
  • 举报
回复

发送文本邮件(已测试可用)
private void Button1_Click(object sender, System.EventArgs e)
{
System.Web.Mail.MailMessage mail=new MailMessage();
mail.To="123@yahoo.com.cn";
mail.From="456@126.com";
mail.Subject="wwww";
//mail.BodyFormat=System.Web.Mail.MailFormat.Text;
mail.BodyFormat=System.Web.Mail.MailFormat.Html;
//string mes=""+Request["mailto"]+",您好。"+"您的朋友:"+Request["username"]+"从

信息网给您推荐了一篇文章--"+Request["url"]+"请您浏览!

";
mail.Body="mes";
//mail.Body=this.message.Text.ToString();
//SmtpMail.SmtpServer= "smtp.163.com";
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "123456"); //set your username here
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "123456"); //set your password here
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/languagecode","0x0804");
SmtpMail.SmtpServer = "smtp.126.com"; //your real server goes here
SmtpMail.Send(mail);
}

wuyq11 2009-12-12
  • 打赏
  • 举报
回复
System.Net.Mail.SmtpClient client = new SmtpClient();
client.Host = "";
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("", "");
client.DeliveryMethod = SmtpDeliveryMethod.Network;
System.Net.Mail.MailMessage message = new MailMessage("", "");
message.Subject = "";
message.Body = "";
message.BodyEncoding = System.Text.Encoding.UTF8;
message.IsBodyHtml = true;
Attachment data = new Attachment(@"", System.Net.Mime.MediaTypeNames.Application.Octet);
message.Attachments.Add(data);
try
{
client.Send(message);
}
catch (Exception ex)
{
MessageBox.Show("Send Email Failed." + ex.ToString());
}
或jmail
jmail.Message m = new Message();
m.Charset = "gb2312";
m.From = from;
m.Subject = subject;
m.AddRecipient(to, null, null);
m.MailServerUserName = "";
m.MailServerPassWord = "";
m.ContentType = "text/html";
m.Body = body;
m.Send("smtp.163.com", false);
适用人群通用各大网易系,腾讯QQ系,新浪系,阿里系等主流邮箱;同时也适用于企业开发的企业邮箱,进行收件和发件。课程概述通用各大网易系,腾讯QQ系,新浪系,阿里系等主流邮箱;同时也适用于企业开发的企业邮箱,进行收件和发件。POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。   SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。。【开发者如何进行快速开发邮件发送系统???本课程系统进行快速研发,项目实战】 部分截图如下:完整版请查看课件或者视频

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧