1、首先引入命名空间:

  1. using System.Net.Mail;

2、定义邮件配置类:

  1. public class EmailServiceConfig
  2. {
  3. /// <summary>
  4. /// 服务地址。
  5. /// </summary>
  6. public String ServiceAddress { get; set; }
  7.  
  8. /// <summary>
  9. /// 端口号。
  10. /// </summary>
  11. public Int32 Port { get; set; }
  12.  
  13. /// <summary>
  14. /// 发件人名。
  15. /// </summary>
  16. public String DisplayName { get; set; }
  17.  
  18. /// <summary>
  19. /// 用户名。
  20. /// </summary>
  21. public String Username { get; set; }
  22.  
  23. /// <summary>
  24. /// 密码。
  25. /// </summary>
  26. public String Password { get; set; }
  27. }

3、定义邮件内容类:

  1. public class EmailMessage
  2. {
  3. /// <summary>
  4. /// 邮件接收人
  5. /// </summary>
  6. public String[] Receivers { get; set; }
  7.  
  8. /// <summary>
  9. /// 邮件抄送人
  10. /// </summary>
  11. public String[] CC { get; set; }
  12.  
  13. /// <summary>
  14. /// 邮件主题
  15. /// </summary>
  16. public String Subject { get; set; }
  17.  
  18. /// <summary>
  19. /// 邮件正文
  20. /// </summary>
  21. public String Content { get; set; }
  22. }

4、定义邮件帮助类:

  1. public class EmailHelper
  2. {
  3. /// <summary>
  4. /// 配置
  5. /// </summary>
  6. private EmailServiceConfig _config;
  7.  
  8. private SmtpClient _client = new SmtpClient();
  9.  
  10. /// <summary>
  11. /// 发送邮件
  12. /// </summary>
  13. /// <param name="message"></param>
  14. public void Send(EmailMessage message)
  15. {
  16. MailMessage mailMessage = new MailMessage();
  17. mailMessage.From = new MailAddress(_config.Username, _config.DisplayName);
  18. message.Receivers.ToList().ForEach(c => mailMessage.To.Add(c));
  19. message.CC.ToList().ForEach(c => mailMessage.CC.Add(c));
  20. mailMessage.Subject = message.Subject;
  21. mailMessage.IsBodyHtml = true;
  22. mailMessage.Body = message.Content;
  23. mailMessage.BodyEncoding = Encoding.UTF8;
  24. mailMessage.Priority = MailPriority.High;
  25. _client.Send(mailMessage);
  26. }
  27.  
  28. /// <summary>
  29. /// 构造函数
  30. /// </summary>
  31. /// <param name="config"></param>
  32. public EmailHelper(EmailServiceConfig config)
  33. {
  34. if (config == null)
  35. {
  36. throw new Exception("配置不能为空。");
  37. }
  38. if (string.IsNullOrEmpty(config.ServiceAddress))
  39. {
  40. throw new Exception("服务地址不能为空。");
  41. }
  42. if (string.IsNullOrEmpty(config.Username))
  43. {
  44. throw new Exception("用户名不能为空。");
  45. }
  46. if (string.IsNullOrEmpty(config.Password))
  47. {
  48. throw new Exception("密码不能为空。");
  49. }
  50.  
  51. _config = config;
  52. _client = new SmtpClient(config.ServiceAddress,config.Port);
  53. _client.UseDefaultCredentials = false;
  54. _client.EnableSsl = false;
  55. _client.Credentials = new System.Net.NetworkCredential(config.Username, config.Password);
  56. _client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
  57. }
  58. }

5、调用帮助类发送邮件:

  1. private static void Main(string[] args)
  2. {
  3. try
  4. {
  5. // 初始化配置
  6. var config = new EmailServiceConfig()
  7. {
  8. ServiceAddress = "smtp.qq.com",
  9. Port = ,
  10. DisplayName = "发件人名",
  11. Username = "123@qq.com",
  12. Password = "******"
  13. };
  14.  
  15. //初始化邮件内容
  16. var message = new EmailMessage()
  17. {
  18. Receivers = new string[] { "abcd@qq.com" },
  19. CC = new string[] { "xyz@qq.com" },
  20. Subject = "这里是邮件主题",
  21. Content = "这里是邮件内容"
  22. };
  23.  
  24. //实例邮件帮助类并发送邮件
  25. var emailHelper = new EmailHelper(config);
  26. emailHelper.Send(message);
  27.  
  28. Console.WriteLine("发送成功!");
  29. }
  30. catch (Exception ex)
  31. {
  32. Console.WriteLine("发送失败!");
  33. Console.WriteLine("错误信息:" + ex.Message);
  34. }
  35.  
  36. Console.ReadLine();
  37. }

C#使用简单邮件传输协议(SMTP)发送邮件的更多相关文章

  1. 45.简单邮件传输协议 SMTP

    一丶简单邮件传输协议 简单邮件传输协议 简单邮件传输协议 SMTP smtplib 模块:(在 Python3版本中,可以通过 SMTP协议发送邮件的模块常为 smtplib, 并且这个模块属于内置模 ...

  2. 简单邮件传输协议SMTP

    1.SMTP是由源地址到目的地址传送邮件的一组规则,用来控制信件的中转方式. 2.SMTP服务器是遵循SMTP协议的发送邮件服务器,用来发送或者中转发出的邮件,客户端通过SMTP命令与SMTP服务器进 ...

  3. SMTP 简单邮件传输协议

    SMTP 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传 ...

  4. 【RL-TCPnet网络教程】第33章 SMTP简单邮件传输协议基础知识

    第33章      SMTP简单邮件传输协议基础知识 本章节为大家讲解SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)的基础知识,方便后面章节的实战操作. (本 ...

  5. C#System.Net.Mail采用简单邮件传输协议发送邮件

    引用: using System.Net.Mail; public class EmailHelper { public static bool SendEmail(string title, str ...

  6. 理解邮件传输协议(SMTP、POP3、IMAP、MIME)

    http://blog.csdn.net/xyang81/article/details/7672745 电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递,就必须遵循一定的规则 ...

  7. POP3是收邮件的协议,SMTP是发邮件的协议,IMAP是一种邮箱通信协议。

    我也是第一次接触这种服务,是因为我自己在做一个小小的自动推送天气情况到自己邮箱.所以才碰到这个的/ 看一下标题,我们可以先这样理解. POP3(Post Office Protocol - Versi ...

  8. JavaMail学习之一-邮件传输协议

    协议:规定好的格式就是协议.就像http协议有请求协议和响应协议,邮件传输也分为发.收邮件的协议. 邮件协议分3种: 发邮件的:SMTP (Simple Mail Transport  Protoca ...

  9. TCP/IP详解学习笔记(11)-- TFTP:简单文本传输协议,BOOTP:引导程序协议

    1.TFTP:      TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,基于UD ...

随机推荐

  1. android UI开源库

    . ActionBarSherlock ActionBarSherlock是一个独立的Android设计库,可以让Android 2.x的系统也能使用ActionBar.此 外,ActionBarSh ...

  2. Cache 工具类

    package com.thinkgem.jeesite.common.utils; import net.sf.ehcache.Cache; import net.sf.ehcache.CacheM ...

  3. python flask model 序列化

    class DictSerializable(object):     def as_dict(self,*args):         result = OrderedDict()         ...

  4. 【M33】将非尾端类设计为抽象类

    1.考虑下面的需求,软件处理动物,Cat与Dog需要特殊处理,因此,设计Cat和Dog继承Animal.Animal有copy赋值(不是虚方法),Cat和Dog也有copy赋值.考虑下面的情况: Ca ...

  5. cdoj 48 Cake 水题

    Cake Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/48 Descrip ...

  6. 深刻理解Java中final的作用(一):从final的作用剖析String被设计成不可变类的深层原因

    声明:本博客为原创博客,未经同意,不得转载!小伙伴们假设是在别的地方看到的话,建议还是来csdn上看吧(原文链接为http://blog.csdn.net/bettarwang/article/det ...

  7. 好看的UI界面

  8. 【JavsScript】Ember.js

    现在,我们经常都可以看到复杂的JavaScript应用程序,由于这些应用程序变得越来越复杂,一长串的jQuery回调语句或者通过应用程序在各个状态执行不同的函数调用,这些做法都会变得无法再让人接受,这 ...

  9. Android监听WIFI网络的变化并且获得当前信号强度

    MainActivity如下: package cc.testwifi; import android.os.Bundle; import android.app.Activity; /** * De ...

  10. iOS开发——实用技术OC篇&8行代码教你搞定导航控制器全屏滑动返回效果

    8行代码教你搞定导航控制器全屏滑动返回效果 前言 如果自定了导航控制器的自控制器的leftBarButtonItem,可能会引发边缘滑动pop效果的失灵,是由于 self.interactivePop ...