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店) 完整的一套汽车美容管理服务系统. 功能介绍:汽车美容服务终端功能强大而又简便实用,界面友 ...
随机推荐
- (转)如果知道dll文件是面向32位系统还是面向64位系统的?
本文为转载文章,原文地址:http://www.cnblogs.com/qguohog/archive/2011/09/13/2174897.html,仅仅是记录供后续使用,如有侵权请通知删除. 在发 ...
- (转)卸载SQLServer2008 数据库
1 卸载Microsoft SQL Server 2008主程序 1.1,控制面板-程序中找到“Microsoft SQL Server 2008”,双击卸载 1.2,弹出管理界面中选择“”删除“ 1 ...
- SQL语句在OLAP的妙用(多维分析与指标计算)
================================================================================ BI传统实现原理: 1.涉及维度管理( ...
- List集合分组
var ArticleList = new Services.Data.SearchService().GetArticleBaseList(ref param); IEnumerable<IG ...
- junit适配器模式应用
适配器模式 定义: 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作: 构成: 目标抽象角色(Target):定义客户要用的特定领 ...
- DPdao
hrbust1053 http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1053 #in ...
- BZOJ1407_NOI2002_荒岛野人_Savage_C++
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1407 题解:http://www.cnblogs.com/hadilo/p/5951091.h ...
- 在PHP5.3以上版本运行ecshop和ecmall出现的问题及解决方案
ecshop 问题一:商城首页报错 Strict Standards: Only variables should be passed by reference in D:\wamp\ecshop\i ...
- C# 发送邮件3
C#邮件发送 这篇文章主要介绍如何使用C#的MailAddress类进行邮件的发送. 1.首先引入命名空间using System.Net.Mail; 2.将发送的邮件的功能封装成一个类,该类中包含了 ...
- leetcode 119
119. Pascal's Triangle II Given an index k, return the kth row of the Pascal's triangle. For example ...