使用System.Net.Mail中的SMTP发送邮件(带附件)

时间:2023-12-25 16:35:43

System.Net.Mail

使用简单邮件传输协议SMTP异步发送邮件

想要实现SMTP发送邮件,你需要了解这些类

SmtpClient :使用配置文件设置来初始化 SmtpClient类的新实例。

它包含以下属性:

Host:设置用于SMTP服务的主机名或主机IP;

Port:设置用于SMTP服务的端口(一般设置为25);

Credentials:身份验证;

Send:直接发送邮件;

SendAsync:异步发送邮件(不阻止调用线程)。

 

MailMessage:表示一封电子邮件。

它包含以下属性:

Attachment:表示文件附件;

CC:抄送;

Subject:主题;

From:发件人

Priority:优先级;

Body:正文;

BodyEncoding:Content-type。

此外  SmtpClient类不具有Finalize方法,因此应用程序必须调用Dispose以显式释放资源。

 static bool mailsend = true;
public async Task Send(object sender, EventArgs e)
{ SmtpClient smtp = new SmtpClient();//实例化一个SMPTClient对象
smtp.EnableSsl = false;//不启用SSL加密
smtp.Host = "00.000.00.000";//此处填写服务器IP
smtp.Port = ;//端口固定为25
//smtp.Credentials = new NetworkCredential("user@.com","password");//验证用户
MailMessage msg = new MailMessage();//实例化一个Message对象
msg.Priority = MailPriority.High;//邮件优先级
msg.To.Add("user@foxmail.com");//收件人
// msg.CC.Add("user@163.com");//抄送
msg.Bcc.Add("user@qq.com");//密送
string fileName = "";
var na = Request.Files.AllKeys;//前端HTTP请求过来的文件
foreach (var item in na)
{
HttpPostedFileBase file = Request.Files[item] as HttpPostedFileBase;
fileName = Path.GetFullPath(file.FileName);
}
Attachment attach = new Attachment(fileName);//将文件路径付给Attachment的实例化对象
ContentDisposition dispo = attach.ContentDisposition;//获取信息并读写附件
dispo.CreationDate = System.IO.File.GetCreationTime(fileName);
dispo.ModificationDate = System.IO.File.GetLastWriteTime(fileName);
dispo.ReadDate = System.IO.File.GetLastAccessTime(fileName);
msg.Attachments.Add(attach);//将附件加入邮件中
msg.From = new MailAddress("SpadesQ@sea.com", "是你呀");//发件人 别名
msg.Subject = "我学习了,你呢?";
msg.SubjectEncoding = System.Text.Encoding.UTF8;
msg.Body = "等下一个她";
msg.BodyEncoding = System.Text.Encoding.UTF8;
smtp.SendCompleted += new SendCompletedEventHandler(client_SendCompleted);
string userState = "Task one";
smtp.SendAsync(msg, userState);//使用异步发送 ,否则线程阻塞
if (mailsend==false) //可在回调时修改mailsend值进行取消
{
smtp.SendAsyncCancel();
}
Response.Write("已发出");
} void client_SendCompleted(object sender, AsyncCompletedEventArgs e)
{
string token =(string)e.UserState;
if (e.Cancelled)
{
Response.Write(string.Format("{0} Send canceled.",token));
}
if (e.Error !=null)
{
Response.Write(string.Format("[{0}] {1}", token, e.Error.ToString()));
}
else
{
Response.Write("Message Send.");
}
mailsend = true;
}

感谢您的观看,您的