1、首先引入命名空间:

using System.Net.Mail;

2、定义邮件配置类:

    public class EmailServiceConfig
{
/// <summary>
/// 服务地址。
/// </summary>
public String ServiceAddress { get; set; } /// <summary>
/// 端口号。
/// </summary>
public Int32 Port { get; set; } /// <summary>
/// 发件人名。
/// </summary>
public String DisplayName { get; set; } /// <summary>
/// 用户名。
/// </summary>
public String Username { get; set; } /// <summary>
/// 密码。
/// </summary>
public String Password { get; set; }
}

3、定义邮件内容类:

    public class EmailMessage
{
/// <summary>
/// 邮件接收人
/// </summary>
public String[] Receivers { get; set; } /// <summary>
/// 邮件抄送人
/// </summary>
public String[] CC { get; set; } /// <summary>
/// 邮件主题
/// </summary>
public String Subject { get; set; } /// <summary>
/// 邮件正文
/// </summary>
public String Content { get; set; }
}

4、定义邮件帮助类:

    public class EmailHelper
{
/// <summary>
/// 配置
/// </summary>
private EmailServiceConfig _config; private SmtpClient _client = new SmtpClient(); /// <summary>
/// 发送邮件
/// </summary>
/// <param name="message"></param>
public void Send(EmailMessage message)
{
MailMessage mailMessage = new MailMessage();
mailMessage.From = new MailAddress(_config.Username, _config.DisplayName);
message.Receivers.ToList().ForEach(c => mailMessage.To.Add(c));
message.CC.ToList().ForEach(c => mailMessage.CC.Add(c));
mailMessage.Subject = message.Subject;
mailMessage.IsBodyHtml = true;
mailMessage.Body = message.Content;
mailMessage.BodyEncoding = Encoding.UTF8;
mailMessage.Priority = MailPriority.High;
_client.Send(mailMessage);
} /// <summary>
/// 构造函数
/// </summary>
/// <param name="config"></param>
public EmailHelper(EmailServiceConfig config)
{
if (config == null)
{
throw new Exception("配置不能为空。");
}
if (string.IsNullOrEmpty(config.ServiceAddress))
{
throw new Exception("服务地址不能为空。");
}
if (string.IsNullOrEmpty(config.Username))
{
throw new Exception("用户名不能为空。");
}
if (string.IsNullOrEmpty(config.Password))
{
throw new Exception("密码不能为空。");
} _config = config;
_client = new SmtpClient(config.ServiceAddress,config.Port);
_client.UseDefaultCredentials = false;
_client.EnableSsl = false;
_client.Credentials = new System.Net.NetworkCredential(config.Username, config.Password);
_client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
}
}

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

        private static void Main(string[] args)
{
try
{
// 初始化配置
var config = new EmailServiceConfig()
{
ServiceAddress = "smtp.qq.com",
Port = ,
DisplayName = "发件人名",
Username = "123@qq.com",
Password = "******"
}; //初始化邮件内容
var message = new EmailMessage()
{
Receivers = new string[] { "abcd@qq.com" },
CC = new string[] { "xyz@qq.com" },
Subject = "这里是邮件主题",
Content = "这里是邮件内容"
}; //实例邮件帮助类并发送邮件
var emailHelper = new EmailHelper(config);
emailHelper.Send(message); Console.WriteLine("发送成功!");
}
catch (Exception ex)
{
Console.WriteLine("发送失败!");
Console.WriteLine("错误信息:" + ex.Message);
} Console.ReadLine();
}

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. LRESULT与wParam和lParam的问题

    在微软vc提供的头文件中有定义在winnt.h中typedef long LONG;在windef.h中typedef LONG LRESULT; 所以LRESULT就是long,也就是长整形之所以取 ...

  2. 解决CSS各种IE各种兼容问题(Google解决方案)

    google的 ie7 – js中是一个JavaScript库(解决IE与W3C标准的冲突的JS库),使微软的Internet Explorer的行为像一个Web标准兼容的浏览器,支持更多的W3C标准 ...

  3. jquery操作select 的value和text值

    获取select 的text值: $('#testSelect option:selected').text(); 获取select 的value值: $('#testSelect').val(); ...

  4. EXTJS项目实战经验总结一:日期组件的change事件:

    1  依据选择的日期,加载相应的列表数据,如图:   开发说明    1 开发思路: 在日期值变化的事件中获得选择后的日期值,传给后台,然后从后台加载相应的数据 2 问题:在查看extjs2.2 的a ...

  5. Flexigrid在IE下不显示数据的处理

    文章总结自我的论坛提问: http://bbs.csdn.net/topics/390498434?page=1#post-394918028 解决方法: 网上的答案经我验证都是不靠谱的,以后大家就知 ...

  6. jquery动态创建form并提交到.ashx文件处理

        有时候在写web 应用的时候,需要临时动态构造一个form 并提交,form 里面的参数以及action,以及是post请求还是get请求,甚至form 的样式都是可以指定的,用原生的java ...

  7. Looksery Cup 2015 D. Haar Features 暴力

    D. Haar Features Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/549/prob ...

  8. C#取真实IP地址及分析

    说一哈,我也是转来的,不是想骗PV,方便自己查而已! 目前网上流行的所谓"取真实IP地址"的方法,都有bug,没有考虑到多层透明代理的情况. 多数代码类似: string IpAd ...

  9. java学习笔记(5)——内部类

    一.内部类 1,静态内部类 使用static修饰,声明在类体中 静态内部类中可以访问外部类的静态成员 2,成员内部类 声明在类体中,不使用static,具有类的成员特征,也就是,必须有类的实例才能 创 ...

  10. C#基础-Func,Action

    Func,Action 的介绍及其用法 Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate,Func位于System.Core命名空间下,使用委托可以提升效率,例如 ...