废话不多说,直接开始操作!
首先,登录发送者QQ邮箱,点开设置----》账户,再将这个(POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务)开启
例图:
开启之后点开生成授权码,获得授权码后,将授权码放入下面代码中即可!
接着编写一个类:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Data.SqlClient; using System.Net.Mail; using System.Net; using System.Net.Mime;
namespace SendEmail { class Send { //实例化一个发送邮件类。 private static MailMessage mailMessage = new MailMessage(); public static bool QQ_email() { //发件人邮箱地址,方法重载不同,可以根据需求自行选择。 mailMessage.From = new MailAddress("发件人邮箱","发件人昵称"); //收件人邮箱地址。 mailMessage.To.Add(new MailAddress("收件人邮箱")); //邮件标题。 mailMessage.Subject = "验证码"; //邮件内容。 mailMessage.Body = "您好,您的验证码为:663245"; //添加到附件中 AddAnnex("1号附件路径,2号附件路径,...");
//实例化一个SmtpClient类。 SmtpClient client = new SmtpClient(); //在这里我使用的是qq邮箱,所以是smtp.qq.com,如果你使用的是126邮箱,那么就是smtp.126.com。 client.Host = "smtp.qq.com"; //使用安全加密连接。 client.EnableSsl = true; //不和请求一块发送。 client.UseDefaultCredentials = false; //验证发件人身份(发件人的邮箱,邮箱里的生成授权码); client.Credentials = new NetworkCredential("发件人邮箱", "发件人授权码"); //发送 client.Send(mailMessage); return true; }
private static void AddAnnex(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);//添加到附件中 } }
} }
然后调用这个类即可完成!相当简单!
如有不会的,请留言。。。谢谢支持!
补充一点,自己遇到的问题,我在本地测试的时候能够正常发送邮件,但是一但部署到服务器上就不能发送邮件了,其实解决办法很简单,只需要设置一下端口号就行了!client.Port = 587;邮件部署到服务器上发送不出的原因其实是服务器禁用了邮箱端口25,只要将其端口改掉就OK啦!