欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-28 12:25:32
System.Net.Mail 使用简单邮件传输协议SMTP异步发送邮件 想要实现SMTP发送邮件,你需要了解这些类 SmtpClient :使用配置文件设置来初始化 SmtpClient类的新实例。 它包含以下属性: Host:设置用于SMTP服务的主机名或主机IP; Port:设置用于SMTP服 ......

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以显式释放资源。

使用System.Net.Mail中的SMTP发送邮件(带附件)
 1 static bool mailsend = true;
 2  public async task send(object sender, eventargs e)
 3         {
 4           
 5             smtpclient smtp = new smtpclient();//实例化一个smptclient对象
 6             smtp.enablessl = false;//不启用ssl加密
 7             smtp.host = "00.000.00.000";//此处填写服务器ip
 8             smtp.port = 25;//端口固定为25
 9             //smtp.credentials = new networkcredential("user@.com","password");//验证用户  
10             mailmessage msg = new mailmessage();//实例化一个message对象
11             msg.priority = mailpriority.high;//邮件优先级
12             msg.to.add("user@foxmail.com");//收件人
13            // msg.cc.add("user@163.com");//抄送
14             msg.bcc.add("user@qq.com");//密送
15             string filename = "";
16             var na = request.files.allkeys;//前端http请求过来的文件
17             foreach (var item in na)
18             {
19                 httppostedfilebase file = request.files[item] as httppostedfilebase;
20                 filename = path.getfullpath(file.filename);
21             }
22             attachment attach = new attachment(filename);//将文件路径付给attachment的实例化对象
23             contentdisposition dispo = attach.contentdisposition;//获取信息并读写附件
24             dispo.creationdate = system.io.file.getcreationtime(filename);
25             dispo.modificationdate = system.io.file.getlastwritetime(filename);
26             dispo.readdate = system.io.file.getlastaccesstime(filename);
27             msg.attachments.add(attach);//将附件加入邮件中
28             msg.from = new mailaddress("spadesq@sea.com", "是你呀");//发件人 别名
29             msg.subject = "我学习了,你呢?";
30             msg.subjectencoding = system.text.encoding.utf8;
31             msg.body = "等下一个她";
32             msg.bodyencoding = system.text.encoding.utf8;
33             smtp.sendcompleted += new sendcompletedeventhandler(client_sendcompleted);
34             string userstate = "task one";
35             smtp.sendasync(msg, userstate);//使用异步发送 ,否则线程阻塞
36             if (mailsend==false) //可在回调时修改mailsend值进行取消
37             {
38                 smtp.sendasynccancel();
39             }
40             response.write("已发出");
41         }
42         
43          void client_sendcompleted(object sender, asynccompletedeventargs e)
44         {
45             string token =(string)e.userstate;
46             if (e.cancelled)
47             {
48                 response.write(string.format("{0} send canceled.",token));
49             }
50             if (e.error !=null)
51             {
52                 response.write(string.format("[{0}] {1}", token, e.error.tostring()));
53             }
54             else
55             {
56                 response.write("message send.");
57             }
58             mailsend = true;
59         }
view code

 

 

 

感谢您的观看,您的