C#发送邮件源码
介绍
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。
SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。
发送邮件的基本步骤
第一:需要指明邮件SMTP服务器地址:smtp..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 = ;
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 = ;
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 = ;
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();
}
}
}
C#发送邮件源码的更多相关文章
- 16Aspx.com源码2014年7月详细
Web电子商务网(三层)V2.0源码 2014-07-31 [VS2010] 源码介绍: Web电子商务网(三层)V2.0源码 源码描述: 一.源码特点 采用三层架构开发, ...
- java mail Received fatal alert: handshake_failure java 无法发送邮件问题 java 发送qq邮件(含源码)
java 无法发送邮件问题 java 发送qq邮件 报错:java mail Received fatal alert: handshake_failure (使用ssl) javax.mail.M ...
- centos7下源码方式安装gitlab8.9+发送邮件+ldap
CentOS7下源码方式安装gitlab 环境描述 操作系统: centos7 redis: >=2.8 mysql >=5.5.14 git >=2.7.4 架构设计 一台gitl ...
- 提高生产力:发送邮件API和Web服务(包含源码)
在Web开发中,发邮件是一种非常常见的功能或任务. 发送邮件的6种方式 一文提到了6种方法,文章发表后,有网友指出了还有另外一种方法,Ant中也可以发送邮件. 打开Foxmail之类的邮件客户端或者在 ...
- 【Azure 应用服务】Azure Function App使用SendGrid发送邮件遇见异常消息The operation was canceled,分析源码逐步最终源端
问题描述 在使用Azure Function App的SendGrid Binging功能,调用SendGrid服务器发送邮件功能时,有时候遇见间歇性,偶发性异常.在重新触发SendGrid部分的Fu ...
- .NET开发邮件发送功能的全面教程(含邮件组件源码)
今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知识 2) ...
- ABP源码分析七:Setting 以及 Mail
本文主要说明Setting的实现以及Mail这个功能模块如何使用Setting. 首先区分一下ABP中的Setting和Configuration. Setting一般用于需要通过外部配置文件(或数据 ...
- 结合ABP源码实现邮件发送功能
1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...
- 2014年6月份第1周51Aspx源码发布详情
企业汽车服务终端管理系统源码 2014-6-3 [VS2010]源码描述:本系统专门服务于(汽车美容4s店) 完整的一套汽车美容管理服务系统. 功能介绍:汽车美容服务终端功能强大而又简便实用,界面友 ...
随机推荐
- hbase1.1.2安装
环境:hadoop2.6.1,zk3.4.6 1.配置环境变量 sudo vi /etc/profile.d/hbase-env.sh export HBASE_HOME=/usr/local/hba ...
- nginx/Windows-1.9.0的日志分割
@echo offrem @echo off rem 取1天之前的日期echo wscript.echo dateadd("d",-1,date) >%tmp%\tmp.vb ...
- OS X 升级 Yosemite 后,Intellij IDEA 与 VirtualBox 启动失败
报错: Dyld Error Message: Symbol not found: _CGContextSetAllowsAcceleration Referenced from: /Library/ ...
- fw:sed的高级用法
转的,找不到原创了.... sed高级用法 <收藏> 首先,应该明白模式空间的定义.模式空间就是读入行所在的缓存,sed对文本行进行的处理都是在这个缓存中进行的.这对接下来 的学习是有帮助 ...
- 【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型
[Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698. ...
- 【最后一篇API译文】Android开发-API指南- Contacts Provider
Contacts Provider 今年加入了某字幕组,加之杂事颇多,许久未添新文了,惭愧之极. 在听闻 Google 即将重返中国后,近日忽又发现官方网站正在放出 API 中文版,比如本文.当然不是 ...
- dumpsys命令的使用及telephony.registry解读
adb shell dumpsys,默认打印出当前系统所有的service信息,通常情况下我们并不想看那么多信息,可以在后面加上具体的服务名,比如想获取关于设备电池的信息,就可以使用以下命令: > ...
- 学习总结 html 表格标签的使用
表格: <table></table>表格 width:宽度.可以用像素或百分比表示. 常用960像素. border:边框,常用值为0. cellpadding:内容跟边框的 ...
- 百度地图API的使用方法
百度地图API 开始学习百度地图API最简单的方式是看一个简单的示例.以下代码创建了一个520x340大小的地图区域并以天安门作为地图的中心: 1. <html> 2. <head& ...
- 在Web中实现C/S模式的Tab
在探讨C/S模式的Tab之前,我们先总结一下B/S模式的Tab通常是什么样的.web中常见的tab设计通常是用于分节展示大量信息以提高页面空间的利用率,而且这些信息通常是静态的,或者交互比较简单.通过 ...