C#发送邮件源码

介绍

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。
SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。

发送邮件的基本步骤

第一:需要指明邮件SMTP服务器地址:smtp.163.com
第二:开启SSL安全连接。
第三:用户凭证。

SmtpClient是什么

Socket → TcpListener → SmtpClient

简单的邮件发送

        /// <summary>
        /// 最基本的发送邮件的方法
        /// </summary>
        public static void Send163Demo()
        {
            string user = "*****@163.com";//替换成你的hotmail用户名
            string password = "******";//替换成你的hotmail密码
            string host = "smtp.163.com";//设置邮件的服务器
            string mailAddress = "*****@163.com"; //替换成你的hotmail账户
            string ToAddress = "*******@163.com";//目标邮件地址。

            SmtpClient smtp = new SmtpClient(host);
            smtp.EnableSsl = true; //开启安全连接。
            smtp.Credentials = new NetworkCredential(user, password); //创建用户凭证
            smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //使用网络传送
            MailMessage message = new MailMessage(mailAddress, ToAddress, "标题", "发送内容");  //创建邮件
            smtp.Send(message); //发送邮件   异步发送邮件 smtp.SendAsync(message, "huayingjie"); //这里简单修改下,发送邮件会变的很快。
            Console.WriteLine("邮件发送成功!");
        }

下面是对代码的封装,进行对hotmail、163、QQ发送邮件

using System.Collections.Generic;
using System.Net.Mail;

namespace SendMail
{
    public class MailModel
    {
        /// <summary>
        /// 用户名,根据需要看是否需要带@hotmail.com
        /// </summary>
        public string UserName { get; set; }

        /// <summary>
        /// 密码
        /// </summary>
        public string Password { get; set; }

        /// <summary>
        /// 服务器
        /// </summary>
        public string Host { get; set; }

        /// <summary>
        /// 邮箱账户
        /// </summary>
        public string FromMailAddress { get; set; }

        /// <summary>
        /// 目标账户
        /// </summary>
        public IList<string> ToAddress { get; set; }

        /// <summary>
        /// 是否开启安全连接
        /// </summary>
        public bool EnableSsl { get; set; }

        /// <summary>
        /// 传输协议
        /// </summary>
        public SmtpDeliveryMethod DeliveryMethod { get; set; }

        /// <summary>
        /// 端口
        /// </summary>
        public int Port { get; set; }

        /// <summary>
        /// 标题
        /// </summary>
        public string Subject { get; set; }

        /// <summary>
        /// 内容
        /// </summary>
        public string Body { get; set; }

        public MailModel() {
            ToAddress = new List<string>();
        }

        public MailModel(
            string userName,
            string password,
            string host,
            string mailAddress,
            IList<string> toAddress,
            bool enableSsl,
            SmtpDeliveryMethod deliveryMethod,
            int port,
            string title,
            string content
            )
        {
            UserName = userName;
            Password = password;
            Host = host;
            FromMailAddress = mailAddress;
            ToAddress = toAddress;
            EnableSsl = enableSsl;
            DeliveryMethod = deliveryMethod;
            Port = port;
            Subject = title;
            Body = content;
        }
    }
}
using SendMail;
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Mail;

namespace SendMailDemo
{
    class SendMail
    {
        public SendMail() { }

        /// <summary>
        /// 最基本的发送邮件的方法
        /// </summary>
        public static void Send163Demo()
        {
            string user = "*****@163.com";//替换成你的hotmail用户名
            string password = "******";//替换成你的hotmail密码
            string host = "smtp.163.com";//设置邮件的服务器
            string mailAddress = "*****@163.com"; //替换成你的hotmail账户
            string ToAddress = "*******@163.com";//目标邮件地址。

            SmtpClient smtp = new SmtpClient(host);
            smtp.EnableSsl = true; //开启安全连接。
            smtp.Credentials = new NetworkCredential(user, password); //创建用户凭证
            smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //使用网络传送
            MailMessage message = new MailMessage(mailAddress, ToAddress, "标题", "发送内容");  //创建邮件
            smtp.Send(message); //发送邮件
            Console.WriteLine("邮件发送成功!");
        }

        //可以
        public static void SendHotmail()
        {
            string user = "*****@hotmail.com";
            string password = "*****";
            string host = "smtp.live.com";
            string mailAddress = "*****@hotmail.com";
            IList<string> toAddress = new List<string>();
            toAddress.Add("*****@163.com");
            bool enableSsl = true;
            SmtpDeliveryMethod deliveryMethod = SmtpDeliveryMethod.Network;
            int post = 465;
            string title = "标题";
            string content = "发送内容";
            MailModel mailModel = new MailModel(user, password, host, mailAddress, toAddress,
                enableSsl, deliveryMethod, post, title, content);

            SennMail(mailModel);
        }

        //可以
        public static void Send163()
        {
            string user = "*****@163.com";
            string password = "*****";
            string host = "smtp.163.com";
            string mailAddress = "*****@163.com";
            IList<string> toAddress = new List<string>();
            toAddress.Add("*****@163.com");
            bool enableSsl = true;
            SmtpDeliveryMethod deliveryMethod = SmtpDeliveryMethod.Network;
            int post = 465;
            string title = "标题";
            string content = "发送内容";
            MailModel mailModel = new MailModel(user, password, host, mailAddress, toAddress,
                enableSsl, deliveryMethod, post, title, content);

            SennMail(mailModel);
        }

        public static void SendQQ()
        {
            string user = "*****@qq.com";
            string password = "*****";
            string host = "smtp.qq.com";
            string mailAddress = "*****@qq.com";
            IList<string> toAddress = new List<string>();
            toAddress.Add("*****@qq.com");
            bool enableSsl = true;
            SmtpDeliveryMethod deliveryMethod = SmtpDeliveryMethod.Network;
            int post = 465;
            string title = "标题";
            string content = "发送内容";
            MailModel mailModel = new MailModel(user, password, host, mailAddress, toAddress,
                enableSsl, deliveryMethod, post, title, content);

            SennMail(mailModel); ;
        }

        public static void SennMail(MailModel mailModel)
        {
            SmtpClient smtp = new SmtpClient(mailModel.Host);
            smtp.EnableSsl = mailModel.EnableSsl;
            smtp.Credentials = new NetworkCredential(mailModel.UserName, mailModel.Password);
            smtp.DeliveryMethod = mailModel.DeliveryMethod;
            //smtp.Port = mailModel.Port;//有些时候设置端口会出现很奇怪的问题,这个与服务器的设置有关,建议不要设置端口。
            MailAddress mailAddress = new MailAddress(mailModel.FromMailAddress);

            MailMessage message = new MailMessage();
            message.From = mailAddress;
            foreach (string toAddress in mailModel.ToAddress)
            {
                message.To.Add(toAddress);
            }
            message.Subject = mailModel.Subject;
            message.Body = mailModel.Body;
            //message.IsBodyHtml = true;
            smtp.Send(message);
            Console.WriteLine("邮件发送成功!");
        }
    }
}
using System;

namespace SendMailDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            SendMail.Send163Demo();
            //SendMail.Send163();
            //SendMail.SendQQ();
            //SendMail.SendHotmailDemo();
            Console.ReadLine();
        }
    }
}
时间: 2024-12-25 19:02:43

C#发送邮件源码的相关文章

16Aspx.com源码2014年7月详细

        Web电子商务网(三层)V2.0源码 2014-07-31   [VS2010] 源码介绍: Web电子商务网(三层)V2.0源码 源码描述: 一.源码特点     采用三层架构开发,购物车功能 二.功能介绍     前台集成了产品在线展示,用户注册.在线调查.在线投稿     后台有类别管理\图书管理\订单管理\会员管理\配送范围管理\邮件列表\广告管理\友情链接管理等     后台添加图书时自动生成缩略图和文字水印     主要参考了petshop的设计架构.使用了Asp.n

CentOS源码安装GitLab汉化版

示例环境: 软件 版本 CentOS 6.5 x86_64 Git 2.6.2 Ruby 2.2.3 Node.js 4.2.1 Redis 3.0.5 MariaDB 10.0.21 GitLab 8.0.5汉化版 GitLab Shell 2.6.6 Nginx 1.8.0 Go 1.5.1 Gitlab-git-http-server 0.2.14 一.修改Yum源为阿里云提高下载速度 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.

2016年最牛逼的分类Android项目源码免费一次性打包下载!

之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年开始不断整理源码区和其他网站上的安卓例子源码,目前总共有810套左右,根据实现的功能被我分成了100多个类,总共接近2.5G,还在不断更新.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是我一个人辛辛苦苦花了很多时间和精力整理的,但是既然这些例子是来自于社区那就让他们免费回归社区吧,(是的!特么的不要一分钱!最看不起那些挂羊头卖狗的)你可以在本帖里面按Ctrl+F查找你需要的关键字,

【最新】最流行的java后台框架 springmvc mybaits 集代码生成器 SSM SSH 项目源码

获取[下载地址]   QQ: 313596790   [免费支持更新]A 代码生成器(开发利器);全部是源码     增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都有明显的优势C 安全权限框架shiro ;  Shiro 是一个用

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签

SpringMVC+Mybatis框架整合源码 项目 下载 rest websocket html5

获取[下载地址]   QQ: 313596790   [免费支持更新]A 代码生成器(开发利器);全部是源码     增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都有明显的优势C 安全权限框架shiro ;  Shiro 是一个用

SpringMVC+Mybatis框架整合源码

获取[下载地址]   QQ: 313596790   [免费支持更新]A 代码生成器(开发利器);全部是源码     增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都有明显的优势C 安全权限框架shiro ;  Shiro 是一个用

springmvc整合mybatis框架源码 bootstrap html5 mysql oracle

获取[下载地址]   QQ: 313596790   [免费支持更新]A 代码生成器(开发利器);全部是源码     增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都有明显的优势C 安全权限框架shiro ;  Shiro 是一个用

【企业框架源码】Springmvc+mybatis+shiro+restful+bootstrap

源码地址获取  1. 使用阿里巴巴Druid连接池(高效.功能强大.可扩展性好的数据库连接池.监控数据库访问性能.支持Common-Logging.Log4j和JdkLog,监控数据库访问)2. 提供高并发JMS消息处理机制3. 所有功能模块化.所有模块服务化.所有服务原子化的方式,提供可拓展的服务模型,使程序稳定运行,永不宕机4. 提供Wink Rest.Webservice服务,故可作为独立服务平台部署 框架整合: Springmvc + Mybatis + Shiro(权限) + REST