ASP.net下调用SmtpClient实现smtp方式邮件发送(带附件)
2011-07-06 16:57
981 查看
做asp.net的网站被要求要加入一个邮件自动发送的功能,同时还要加入附件网上搜索了很多,自己记录总结一下
废话说完先贴代码:
附上三个类的类图:
再给个实际调用的例子:
另外有些邮箱,例如qq邮箱必须先登录邮箱手动开启stmp服务!!!
废话说完先贴代码:
public class MyMail { private MyMail(string title, string content, string from, string to) { this.Title = title; this.Content = content; this.SendFrom = from; this.SendTo = to; this.IsHTML = false; this.Priority = System.Net.Mail.MailPriority.Normal; this.Accessories = new List<string>(); } /// <summary> /// 创建封邮件 /// </summary> /// <param name="title">标题</param> /// <param name="content">正文</param> /// <param name="from">发件邮箱</param> /// <param name="to">收件邮箱</param> /// <returns></returns> public static MyMail CreateMail( string title, string content, string from, string to) { return new MyMail(title, content, from, to); } /// <summary> /// 添加附件 /// </summary> /// <param name="path">附件存放路径</param> public void AddAccessory(string path) { this.Accessories.Add(path); } /// <summary> /// 移除添加的附件 /// </summary> /// <param name="path">附件存放路径</param> public void RemoveAccessory(string path) { this.Accessories.Remove(path); } /// <summary> /// 邮件标题 /// </summary> public string Title { get; set; } /// <summary> /// 正文内容 /// </summary> public string Content { get; set; } /// <summary> /// 发件邮箱地址 /// </summary> public string SendFrom { get; set; } /// <summary> /// 收件邮箱地址 // </summary> public string SendTo { get; set; } /// <summary> /// 正文格式是否为Html /// </summary> public bool IsHTML { get; set; } /// <summary> /// 邮件优先级 /// </summary> public System.Net.Mail.MailPriority Priority { get; set; } /// <summary> /// 携带附件存放路径 /// </summary> public List<string> Accessories { get; set; } } public class MailServer { private MailServer(string server,string usr,string passwnd) { this.Port = 25; this.TimeOut=9999; this.ServerHost = server; this.UserName = usr; this.PassWnd = passwnd; } /// <summary> /// 创建一个邮件发送服务 /// </summary> /// <param name="server"服务></param> /// <param name="usr">账户登录名</param> /// <param name="passwnd">密码</param> /// <returns></returns> public static MailServer CreateMailServer( string server, string usr, string passwnd) { return new MailServer(server, usr, passwnd); } /// <summary> /// smtp服务地址 /// </summary> public string ServerHost { get; set; } /// <summary> /// 登录用户名 /// </summary> public string UserName { get; set; } /// <summary> /// 登录密码 /// </summary> public string PassWnd { get; set; } /// <summary> /// 端口号默认不用设置为25 /// </summary> public int Port { get; set; } /// <summary> /// 超时设定 /// </summary> public int TimeOut { get; set; } } public class MailSend { protected System.Net.Mail.SmtpClient _client; public MailSend(MailServer server) { _client= new System.Net.Mail.SmtpClient(server.ServerHost,server.Port); _client.Credentials = new System.Net.NetworkCredential( server.UserName,server.PassWnd); _client.Timeout = server.TimeOut; } public bool Send(MyMail mymail) { try { //邮件发送人地址 System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress(mymail.SendFrom); //收件人地址 System.Net.Mail.MailAddress to = new System.Net.Mail.MailAddress(mymail.SendTo); System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(mymail.SendFrom, mymail.SendTo); mail.Subject = mymail.Title; mail.Body = mymail.Content; mail.IsBodyHtml = mymail.IsHTML; //添加附件 foreach (string accessory in mymail.Accessories) { System.Net.Mail.Attachment data = new System.Net.Mail.Attachment(accessory); mail.Attachments.Add(data); } _client.Send(mail); mail.Dispose(); return true; } catch { return false; } } }
附上三个类的类图:
再给个实际调用的例子:
MailServer server = MailServer.CreateMailServer( "smtp.163.com", " sender@163.com ", "******");//此处填写stmp服务提供商、登录帐号、密码 MyMail mail=MyMail.CreateMail( "测试邮件标题", "你好这是一封测试邮件", "sender@163.com", "receiver@sina.com"); //此处填写邮件标题、正文、发送者邮箱和接受者邮箱 mail.AddAccessory(@"E:\Winter.jpg");//此处用于添加本地路径附件 MailSend mailsender = new MailSend(server); if (mailsender.Send(mail)) { //邮件发送成功 } else { //失败处理 }注意:邮件发送者必须与服务提供商是同一个。例如:发送者邮箱为163的邮箱,登录名、密码和stmp服务提供商就必须是163的。
另外有些邮箱,例如qq邮箱必须先登录邮箱手动开启stmp服务!!!
相关文章推荐
- ASP.net下调用SmtpClient实现smtp方式邮件发送(带附件)
- asp.net 调用SmtpClient发送邮件(转)
- 使用MailMessage和SmtpClient类实现asp.net的邮件发送(有详细注释并已测试通过)
- asp.net利用SmtpClient发送邮件
- asp.net利用SmtpClient发送邮件
- 在ASP.NET中使用SmtpClient发送邮件
- Asp.Net用SmtpClient发送邮件
- 【Vegas原创】ASP.NET读取Excel,并以邮件正文方式和附件方式发送实例
- 【Vegas原创】ASP.NET读取Excel,并以邮件正文方式和附件方式发送实例
- asp.net利用SmtpClient发送邮件
- 每日学习总结:CSS:Clear属性的用法、重复交易提示框、弹出提示框后页面变形、asp.net调用smtp服务发送邮件问题
- asp.net使用smtp协议实现简单的发送邮件(支持附件)
- 每日学习总结:CSS:Clear属性的用法、重复交易提示框、弹出提示框后页面变形、asp.net调用smtp服务发送邮件问题
- 在asp.NET 中使用SMTP发送邮件的实现代码
- ASP.NET 实现发送邮件 + 多个收件人 + 多个附件
- 在asp.NET 中使用SMTP发送邮件的实现代码
- python smtplib模块(实现调用第三方smtp服务器发送邮件)
- 采用SmtpClient方式发送邮件,如果服务器的名字中有中文,会报"在邮件标头中找到无效的字符”"错误
- 使用System.Net.Mail.SmtpClient 发送邮件
- 在 Laravel 5.1 中使用SMTP驱动实现邮件发送(含附件和图片)详细教程