各位大侠们,跪求一个解决方案。以下是我用System.Net.Mail发送email的代码摘要
 // 587;//Gmail使用的端口
SmtpClient client = new SmtpClient("smtp.gmail.com",587);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
Thread.Sleep(50);
// Your user name & password
 client.Credentials = new System.Net.NetworkCredential("username", "password");
Thread.Sleep(50);
client.EnableSsl = true; //经过ssl加密 */
MailMessage message = new MailMessage();
message.From = new MailAddress("[email protected]");
message.Subject = "test";
message.IsBodyHtml = true;
Encoding ed = Encoding.GetEncoding("utf-8");
message.BodyEncoding = System.Text.Encoding.UTF8;
message.Body="test";
client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
client.SendAsync(message, null);代码通过了长时间的测试,几乎所有的邮箱都能发送成功,但总是偶尔出现发送不成功的地方,我通过SendCompleted这个方法捕获了发送异常,但发送不成功的时候,也没有返回任何异常,提示总是成功的,但对方就是收不到。
我本身是通过gmail的邮箱smtp来发送的,发送gmail自己的邮箱好像基本都能成功,但如果是番茄花园xp的操作系统,就怎么也发送不出去。以上代码使用的是.net framework2.0和.net framework3.5都测试了,都能发送成功,window xp、win2003、xin7都没有问题,唯一的问题就是有时候发送后,对方就是收不到,没有什么规律,同样一个收件地址,有时能成功,有时就会收件人收不到,现在唯一发现的小规律就是某些加密级别比较高的邮件服务器或者国内的某些企业邮箱,总是会出现收不到的情况,发送gmail基本很少失败。
为此小弟特别苦恼,如果完全发送不成功,也就认了,经过了快半年的时间实际使用测试,还是没有找到发不成功的规律。曾经一度想换代码,但没有发现更好的代码,不知道各位有没有更好的方案;或者对我以上遇到的问题有没有一些经验,可以交流一下。
跪谢了!
没分了,全部的分都押上了

解决方案 »

  1.   

    使用jmail试试
    或可能与邮箱有关
      

  2.   

    SmtpClient client = new SmtpClient("smtp.gmail.com",587);gmail 发送是 465的端口
      

  3.   


    jmail不知道怎么使用ssl,gmail需要使用ssl的
      

  4.   

    还是配置问题,代码没问题,
    你能不能不使用免费的smtp,有可能的话使用自己的smtp服务器,很多时候,免费其实意味着不用负责任。
    对代码来说,调用发送client.Send成功了,代码的任务就结束了,其他的一切就交给smtp服务器,
    smtp传送email过程中出错,一般会有一个回复发送到你的发送者邮箱里,你可以查看一下,基本对方拒收,网络不通,查无此人等错误都能收到错误回复,
    如果没有错误回复,那应该就是smtp传送成功了,很有可能接收方smtp服务器把你的email抛弃掉了(这个不好查),或者你的outlook等email管理软件把你的email归到垃圾邮件里面,
      

  5.   

    我也有这样的问题,smtp 发送邮件不稳定
      

  6.   

    不是代码的问题
    如果你连续发邮件的话 Gmail可能会认为你在发垃圾邮件,系统会暂停一段时间发邮件的功能。
      

  7.   

    smtp服务器邮件和通过网页发送是有区别的。一般来说直接通过网页发送的限制少,能发送的邮件数量多。而服务器对通过smtp的邮件监控严格。比如hotmail反邮件spam做的太到位了,有时候有些邮件直接进了垃圾箱或是根本就没收到。一般来说普通邮件服务器都是能收到你的信(群发),因为他们反spam邮件机制不严格。yahoo,hotmail,gmail是大众服务器,要是是这些服务器不能收到,那是正常的。
      

  8.   

    企业邮箱也就是域名邮箱并不需要有自己的服务器,他们可以托管在hotmail,gmail.所以本质上还是使用那些 限制严格的服务器
      

  9.   

    我也曾经怀疑过是邮件内容的问题,但现在确实不知道什么时候能成功,什么时候不成功。我曾经做过测试,就是同一封邮件,发到不同的收件人,刚开始都能收到,过了一段时间后,就出现了不知道什么时候能收到的问题。
    我比较认同16楼说的一个,有可能被Gmail当成垃圾邮件处理了,smtp服务器不给发送,我代码做了异常捕获的,没有任何错误报告,并且有发送失败后的提醒功能,也没有收到发送失败的邮件。
    有人说可能和客户端的杀毒软件有关系,有些人说把杀毒软件关闭后就能发送。但这个不太好查。
    我比较奇怪的是为什么outlook的发送都很成功,有人知道outlook是用什么技术发送的吗?或者说outlook有没有开放什么接口,可以直接调用outlook的发送功能
      

  10.   

    不知道您说的使用网页发送,是指用System.Web.Mail那个来发送吗?
      

  11.   

    不知道我用自己的smtp搭建服务器会不会好使
      

  12.   

    我也老遇到这个问题,经常程序正常终了了 但是收不到邮件,去重启下smtp服务就一下子收到了好多
      

  13.   

    我是使用多线程来发的,你说代码中间要不要让线程sleep一会呢?
    这东西是不是不是代码本身的问题哦
      

  14.   

    兄弟们,这问题解决了吗?我很怀疑是Gmail的问题,可是不知道怎么可以解决。我常对客户说,我们的邮件功能很好,你发10封信,至少能收到7封。
      

  15.   

    message.To
    楼主问一下,没有发送到那里,有问题吧!