利用C#邮件发送邮箱使用到两个类SmtpClient和MailMessage。可以把SmtpClient看做发送邮件信息的客户端,而把MailMessage看做需要发送的消息。

下面是我写的发送邮件的公共方法:

  1  /// <summary>
  2         ///
  3         /// </summary>
  4         /// <param name="ServerIP">发送邮件服务器ip或者域名</param>
  5         /// <param name="ServerPort">服务器端口</param>
  6         /// <param name="UserName">发件人的账号</param>
  7         /// <param name="Password">发件人的密码</param>
  8         /// <param name="FromAddress">发件人的邮箱地址</param>
  9         /// <param name="FromAddressName">发件人名称</param>
 10         /// <param name="Subject">主题</param>
 11         /// <param name="Body">正文</param>
 12         /// <param name="ToAddressList">收件人集合</param>
 13         /// <param name="CCAddressList">副本收件人集合</param>
 14         /// <param name="BccAddressList">密件抄送收件人集合</param>
 15         /// <param name="IsHtml">正文是否可以使用html标签</param>
 16         /// <param name="AttachMentFileList">附件</param>
 17         /// <param name="MailPriority">发送邮件的优先级 三个选项:低 中 高</param>
 18         /// <returns></returns>
 19         public String SendMail(string ServerIP, int? ServerPort, string UserName, string Password, string FromAddress, string FromAddressName, string Subject, string Body, List<string> ToAddressList, List<string> CCAddressList, List<string> BccAddressList, bool IsHtml, List<AttachmentFile> AttachMentFileList, MailPriority MailPriority)
 20         {
 21             try
 22             {
 23                 if (string.IsNullOrEmpty(ServerIP))
 24                 {
 25                     return "ServerIP 不能为空!";
 26                 }
 27
 28                 SmtpClient mSmtpClient = new SmtpClient(ServerIP); //申明SmtpClient对象
 29                 System.Net.Mail.MailMessage mMailMessage = new System.Net.Mail.MailMessage(); //申明MailMessage对象
 30
 31                 if (ServerPort != null)
 32                 {
 33                     mSmtpClient.Port = (int)ServerPort;
 34                 }
 35
 36                 if (String.IsNullOrEmpty(FromAddress))
 37                 {
 38                     return "发件人不能为空";
 39                 }
 40
 41                 if (string.IsNullOrEmpty(FromAddressName))
 42                 {
 43                     mMailMessage.From = new MailAddress(FromAddress);
 44                 }
 45                 else
 46                 {
 47                     mMailMessage.From = new MailAddress(FromAddress, FromAddressName);
 48                 }
 49
 50                 if (string.IsNullOrEmpty(Subject))
 51                 {
 52                     return "主旨不能为空!";
 53                 }
 54
 55                 if (ToAddressList == null || ToAddressList.Count() == 0)
 56                 {
 57                     return "收件人不能为空!";
 58                 }
 59
 60                 // mSmtpClient.UseDefaultCredentials = false;
 61                 mSmtpClient.Credentials = new NetworkCredential(UserName, Password); //设置发送人的邮箱账号和密码,163邮箱有设置授权码
 62                 mSmtpClient.EnableSsl = true;  //启用ssl,也就是安全发送
 63
 64                 foreach (var item in ToAddressList)  //收件者
 65                 {
 66                     mMailMessage.To.Add(item);
 67                 }
 68                 if (CCAddressList != null && CCAddressList.Count() != 0)
 69                 {
 70                     foreach (var item in CCAddressList)  //副本
 71                     {
 72                         mMailMessage.CC.Add(item);
 73                     }
 74                 }
 75
 76                 if (BccAddressList != null && BccAddressList.Count() != 0)
 77                 {
 78                     foreach (var item in BccAddressList)  //密件抄送人员
 79                     {
 80                         mMailMessage.Bcc.Add(item);
 81                     }
 82                 }
 83
 84                 mMailMessage.Subject = Subject;
 85                 mMailMessage.IsBodyHtml = IsHtml; //正文是否使用html标签展示
 86                 mMailMessage.Body = Body; //正文
 87                 mMailMessage.BodyEncoding = System.Text.Encoding.UTF8; //正文的编码原则
 88                 mMailMessage.Priority = MailPriority; //优先级
 89
 90                 if (AttachMentFileList != null && AttachMentFileList.Count() != 0)  //判断是否有附件
 91                 {
 92                     foreach (var item in AttachMentFileList)
 93                     {
 94                         Attachment mAttachment = new Attachment(item.FilePath); //添加文件的文职
 95                         mAttachment.Name = item.FileName;//附件显示的文件名称
 96                         mAttachment.NameEncoding = System.Text.Encoding.UTF8;
 97                         mAttachment.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
 98                         mAttachment.ContentDisposition.Inline = true;
 99                         mAttachment.ContentDisposition.DispositionType = System.Net.Mime.DispositionTypeNames.Attachment;
100                         mMailMessage.Attachments.Add(mAttachment);
101                     }
102                 }
103
104                 mSmtpClient.Send(mMailMessage);
105                 return "发送成功!";
106
107             }
108             catch (Exception ex)
109             {
110                 return ex.Message;
111             }
112         }
113
114         public string SendMail(String ServerIP, string UserName, string Password, string FromAddress, string FromAddressName, string Subject, string Body, List<string> ToAddressList)
115         {
116             return SendMail(ServerIP, null, UserName, Password, FromAddress, FromAddressName, Subject, Body, ToAddressList, null, null, false, null, MailPriority.Normal);
117         }
118     }
119     public  class AttachmentFile
120     {
121         /// <summary>
122         /// 文件路径
123         /// </summary>
124         public string FilePath { get; set; }
125         /// <summary>
126         ///附件显示的文件明
127         /// </summary>
128         public string FileName { get; set; }
129     }

上面的代码可以直接使用。基本的方法都有,在这儿需要说明下AttachmentFile类是我用于发送文件的时候可以重新命名文件名。

注意:大家在使用的时候注意一下参数UserName和Password,在这儿我以我163的邮箱为例,解释下这两个参数的作用。

在使用163邮箱服务器发送信息时需要按照图片上的操作开启客户端授权密码,上面的UserName和Password就是我们的邮箱地址和授权码。至于QQ邮箱我有试验过,但是就是无法发送邮件,至于你们说的开启POP3和SMTP的选项,我也已经开启了,如果知道一些原因的话,可以在下面留言告诉我!感激!

希望能帮到大家!

转载于:https://www.cnblogs.com/wujiadexingfu/p/7711527.html

C# 发送email邮件!相关推荐

  1. C#发送Email邮件(实例:QQ邮箱和Gmail邮箱)

    下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号.需要引用: using System.Net.Mail; using System.Text; using System.Net;程 ...

  2. linux shell 发送email 邮件

    方法一:简单邮件发送 echo 'hello world' | mail -s "Subject" -t  yanggang@ithomer.com,yanggang_2050@1 ...

  3. 【转载】如何用Python发送Email邮件?

    文章目录 综述 连接SMTP服务器 登录SMTP服务器 如何获得邮箱授权码 通过SSL登录SMPT服务器 发送\抄送文本邮件 密送文本邮件 发送HTML邮件 参考 综述 用代码发送Email,在很多场 ...

  4. Java发送email邮件

    首先导入3个Jar文件 activation.jar commons-email-1.4.jar mail.jar email实体类: Mail package com.ljf.www.common. ...

  5. php发送邮件函数,php发送Email邮件的函数示例

    在php中,使用自带的mail()函数来发送邮件,会存在很多不安全因素. 我们实现了如下的ae_send_mail函数,适用于PHP4.0.2或更高版本. ae_send_mail调用时只用四个参数: ...

  6. SpringBoot发送Email邮件-发送多人HTML邮件

    1.创建项目 当然也可以直接在pom文件加入依赖 <dependency><groupId>org.springframework.boot</groupId>&l ...

  7. 发送email邮件报错550、5.7.1

    情况说明 exchange 搭建的邮箱服务器国内收发没问题,发送Gmail邮箱报错,初步排查邮件被拉黑 解决方案1. 去反垃圾邮件组织查询了IP和域并没有拉黑,去Gmail反垃圾系统里面申诉问题24小 ...

  8. java邮件教程_Java发送Email/邮件

    使用Java应用程序发送邮件是很简单的,需要安装JavaMail API 和Java Activation Framework (JAF) 在机器上. 可以从Java的标准网站上下载JavaMail( ...

  9. 【Python】使用Zoho/Hotmail给单人/多人发送Email邮件,以及发发送附件

    文章目录 Zoho 给单个接收者发送时 给多接收者发送时.. Hotmail 发送邮件的code smtplib.SMTPNotSupportedError: SMTP AUTH extension ...

  10. Unity 如何在程序中发送Email邮件

    发送邮件需要用到System.Net.Mail命名空间下的MailMessage和SmtpClient类,smtp是一种提供可靠且有效的电子邮件传输协议,是建立在FTP文件传输服务上的一种邮件服务.下 ...

最新文章

  1. 首届中文NL2SQL挑战赛:千支队伍参赛,国防科大夺冠
  2. Windows+Git+TortoiseGit+COPSSH安装图文教程 转载
  3. python selenium webdriver方法封装(find_element_by)
  4. Yii的各种query
  5. RPA或成为日本大银行“瘦身”潮的催化剂
  6. C和C++太难了。。搞这个方向进大厂它不香吗?
  7. 职场心理:12个建议或许能改变你的一生(图)
  8. Java IO流之PrintStream分析
  9. BCB线程的互斥与同步
  10. c语言的跳线帽,电脑主板上跳线帽有什么作用图文介绍
  11. 软件工程采取了哪些措施以保证最终能够交付给用户一个高质量、低成本的软件产品?
  12. Mybatis_day3_Mybatis的多表查询
  13. type python django models_Django 模型
  14. Delphi7 sn
  15. Mac 如何免费支持NTFS 格式移动硬盘读写
  16. Office Visio 2013、Office Project Pro 2013 简体中文大客户版32位、64位下载
  17. 怎么把PicPick设置成中文版?
  18. Cisco Packet Tracer思科模拟器交换机的VTP技术
  19. 【考研】操作系统:2019年真题43(同步互斥问题)
  20. 欧陆风云3实用修改代码

热门文章

  1. linux webapi测试,Webapi管理和性能测试工具WebBenchmark
  2. python判断字符串在元祖_Python基础(2)——字典、元祖、字符串方法、非空即真、文件...
  3. 汇编 cmp_汇编复习
  4. android4.0支持m3u8格式,【报Bug】安卓下无法播放M3U8格式音频,报错
  5. python窗口居中_Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
  6. java 插入mysql 日期_Java日期-插入数据库
  7. java prototype是什么,java设计模式-原型模式(Prototype)
  8. ns3中调试程序------命令行、gdb和logging系统
  9. 工业POE交换机使用中的常见问题汇总
  10. 【渝粤题库】陕西师范大学210022 学前儿童语言教育 作业(专升本)