使用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以显式释放资源。
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 }
感谢您的观看,您的