日期:2014-05-18  浏览次数:21050 次

关于“跪求System.Net.Mail发送邮件总是不稳定,有时成功有时失败”这个问题的最新回复,因为不让我连续回复,只能再发一贴了。
因为不让我连续回复,只能再发一贴了。

发现一个问题,如果使用System.Web.Mail通过Gmail来发送,则端口号是465,如果是使用System.Net.Mail通过Gmail来发送的,则端口号是587.
我把发送程序改成了System.Web.Mail,好像是发送邮件都能成功了,原来有个总是收不到的邮箱地址,竟然也奇迹般的收到了。
是不是System.Web.Mail这种方式好一些?
等我测试一段时间后再把战绩告诉大家。
另外我知道有个LumiSoft.Net.SMTP.Client可以发送Email,但试了好久不知道怎么用,收邮件我是用LumiSoft.Net.POP3.Client,很好用

原帖地址:http://topic.csdn.net/u/20100627/20/c389a51f-b334-4e39-a8e1-62d9488331e2.html

------解决方案--------------------
我有一个发邮件的类 写的很好 你留个邮箱地址 我发给你
------解决方案--------------------
System.Web.Mail是旧版本里面的东西,后来改成System.Net.Mail了
感觉都不大好用,经常会发不出邮件,一直在排队,等了好久才发的出去
重启下smtp服务 就全都发出去了

C# code

//new 出 客服端的 smtp
SmtpClient client = new SmtpClient(); 
client.Host = "smtp.163.com";
//需要发件人的账号 密码
client.Credentials = new System.Net.NetworkCredential("邮箱名", "密码");

------解决方案--------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Mail;
using System.Net.Mime;

/// <summary>
/// 发送邮件的类
/// </summary>
public class SendMail
{
private MailMessage mailMessage;
private SmtpClient smtpClient;
private string password;//发件人密码
/**/
/// <summary>
/// 处审核后类的实例
/// </summary>
/// <param name="To">收件人地址</param>
/// <param name="From">发件人地址</param>
/// <param name="Body">邮件正文</param>
/// <param name="Title">邮件的主题</param>
/// <param name="Password">发件人密码</param>
public SendMail(string To, string From, string Body, string Title, string Password)
{
mailMessage = new MailMessage();
mailMessage.To.Add(To);
mailMessage.From = new System.Net.Mail.MailAddress(From);
mailMessage.Subject = Title;
mailMessage.Body = Body;
mailMessage.IsBodyHtml = true;
mailMessage.BodyEncoding = System.Text.Encoding.UTF8;
mailMessage.Priority = System.Net.Mail.MailPriority.Normal;
this.password = Password;
}
/**/
/// <summary>
/// 添加附件
/// </summary>
public void Attachments(string Path)
{
string[] path = Path.Split(',');
Attachment data;
ContentDisposition disposition;
for (int i = 0; i < path.Length; i++)
{
data = new Attachment(path[i], MediaTypeNames.Application.Octet);//实例化附件
disposition = data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(path[i]);//获取附件的创建日期
disposition.ModificationDate = System.IO.File.GetLastWriteTime(path[i]);// 获取附件的修改日期
disposition.ReadDate = System.IO.File.GetLastAccessTime(path[i]);//获取附件的读取日期
mailMessage.Attachments.Add(data);//添加到附件中
}
}
/**/
/// <summary>
/// 异步发送邮件
/// </summary>
/// <param name="CompletedMethod"></param>
public void SendAsync(SendCompletedEventHandler CompletedMethod)
{
if (mailMessage != null)
{
smtpClient = new SmtpClient();
smtpClient.Credentials = new System.Net.NetworkCredential(mailMessage.From.Address, password);//设置发件人身份的票据
smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtpClient.Host = "smtp." + mailMessage.From.Host;
smtpClient.SendCompl