c# 发送SMTP邮件
2016-03-27 00:00
399 查看
摘要: 这里演示最常见的发送qq邮件
点击生成授权码。然后拿到授权码后,就得到了我们代码中的Mailpwd,所以这里不要想当然觉得是你的qq号的登陆密码。
祝你好运!不懂得加qq:739462304@qq.com
一.写在前面
之前很早就想实现以下如果发邮件的问题。因为很多软件或者网站的注册都需要使用到邮箱注册和密码找回。然后不知道是参数格式不对还是什么原因,一直发送不成功。表示很捉急。如今又重新拾起来了。虽然中间出了点岔子,把电脑给玩坏了。dns解析域名有问题了导致无法上网了。不过现在一切恢复如初。并且发邮件的功能也很好的实现了。现在与大家分享。二.代码片段
/// <summary> /// 发送邮件 /// </summary> /// <param name="Dep_Email">收件人邮箱格式:"收件人姓名1<1992113422@qq.com>;收件人姓名2<4342343@qq.com>"</param> /// <param name="Mis_Name">"邮件主题"</param> /// <param name="Mis_Describe">邮件内容</param> /// <param name="File_Path">附件名(含路径)</param> /// <param name="appendinfo">对附件的说明</param> /// <returns></returns> public static string MailSending(string Dep_Email, string Subject, string Mis_Describe, string FileName,string appendinfo="") { string MailUser = ConfigurationManager.AppSettings["MailUser"].ToString();//发件人的邮箱地址;如:7234@qq.com string MailName = ConfigurationManager.AppSettings["MailName"].ToString();//发件人名字 string MailHost = ConfigurationManager.AppSettings["MailHost"].ToString();//邮件服务器名字;qq的话,为:smtp.qq.com string MailPwd = ConfigurationManager.AppSettings["MailPwd"].ToString();//为授权码(在qq邮箱首页里面开启smtp服务后,会生成授权码; MailAddress from = new MailAddress(MailUser, MailName); MailMessage mail = new MailMessage(); mail.Subject = Subject; mail.From = from; try { string[] mailNames = (Dep_Email).Split(new char[] { ';' }); string[] array = mailNames; for (int i = 0; i < array.Length; i++) { string name = array[i]; if (name != string.Empty) { string displayName; string address; if (name.IndexOf('<') > 0) { displayName = name.Substring(0, name.IndexOf('<')); address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' '); } else { displayName = string.Empty; address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' '); } mail.To.Add(new MailAddress(address, displayName)); } } mail.Body = Mis_Describe; mail.BodyEncoding = Encoding.UTF8; mail.IsBodyHtml = true; mail.Priority = MailPriority.Normal; FileStream fs=null; if (FileName != "") { fs = new FileStream(FileName, FileMode.Open, FileAccess.Read);//如果不使用文件流,资源无法被释放 mail.Attachments.Add(new Attachment(fs, appendinfo)); mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess; } SmtpClient client = new SmtpClient(); client.Host = MailHost; client.Port = 587; client.UseDefaultCredentials = false; client.EnableSsl = true; client.Credentials = new NetworkCredential(MailUser, MailPwd); client.DeliveryMethod = SmtpDeliveryMethod.Network; mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; client.Send(mail); if(fs!=null) fs.Close();//关闭流,以便其他操作能够打开该文件资源 } catch (SmtpFailedRecipientException ex) { string msg = ""; msg += "=====================发送邮件失败============"; if (!string.IsNullOrEmpty(ex.FailedRecipient)) msg += "\r\n" +"失败邮箱:" +ex.FailedRecipient; msg += "\r\n" + "Message:"+ex.Message; msg += "\r\n" + "Source:" + ex.Source; LogHelper log = new LogHelper("邮件日志"); log.WriteLog(msg); return "失败啦!请查看日志!"; } return mail.ToString(); }
三.需要注意的地方
上面的代码基本上都已经被详细的注释了。按照格式输入参数应该是没有什么问题啦。不过呢,在使用上面的代码之前得做一个设置。就是我们得进入我们的qq邮箱首页,找到顶部的设置按钮,单击它,选择账户选项卡。然后下拉,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。将其所得服务都开启。开启完了后。下面有一个温馨提示:温馨提示:登录第三方客户端时,密码框请输入“授权码”进行验证。生成授权码。点击生成授权码。然后拿到授权码后,就得到了我们代码中的Mailpwd,所以这里不要想当然觉得是你的qq号的登陆密码。
四.一些步骤图如下:
祝你好运!不懂得加qq:739462304@qq.com
相关文章推荐
- C#简单实现在网页上发邮件的案例
- .NET实现定时发送邮件代码(两种方式)
- vbs sendmail发邮件带附件方法
- php下使用SMTP发邮件的代码
- Java邮件发送程序(可以同时发给多个地址、可以带附件)
- asp jmail发邮件 详细解析第1/2页
- PHP借助phpmailer发送邮件
- 帝国CMS留言板回复后发送EMAIL通知客户
- Python监控主机是否存活并以邮件报警
- 关于outlook2007在WIN7下收取邮件很慢的解决办法
- android sdk --- linkify的使用
- 调用系统应用发送邮件。附:Intent启用系统应用
- 传参方法:sharedApplication, NSUserDefaults, protocol 和 delegate(实例)
- ubuntu 安装sendmail功能 (实现邮件的发送)
- Sublime Text 3 的插件开发——Email
- C#发送邮件及附件
- <MessageUI/MessageUI.h>发送邮件
- iOS启用发邮件的方法
- 程序员必知必会之Email篇
- 防遗忘笔记:推荐一个ubuntu 下可以通过命令行发送邮件的软件