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店) 完整的一套汽车美容管理服务系统. 功能介绍:汽车美容服务终端功能强大而又简便实用,界面友 ...
随机推荐
- SSH连接问题
新安装的ubuntu14.04无法使用root用户ssh连接,显示ssh root permission denied 解决方法: /etc/ssh/sshd_confg: PermitRootLog ...
- 403 Forbidden
http://baike.baidu.com/link?url=JJXC_XqJ2d-twe1dhbLUiRgvZU5OfneRURT4LvrtWBqv9Av4J0GPOlwk3KQuRx4Hzu4N ...
- Rolling Cursor Invalidations with DBMS_STATS.AUTO_INVALIDATE (文档 ID 557661.1)
Rolling Cursor Invalidations with DBMS_STATS.AUTO_INVALIDATE (文档 ID 557661.1) 转到底部 In this Documen ...
- 菜鸟-手把手教你把Acegi应用到实际项目中(7)-缓存用户信息
首先讲讲EhCache.在默认情况下,即在用户未提供自身配置文件ehcache.xml或ehcache-failsafe.xml时,EhCache会依据其自身Jar存档包含的ehcache-fails ...
- iOS开发-文件管理(一)
iOS开发-文件管理(一) 一.iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立.封闭.安全的空间,叫做沙盒.它一般存放着程序包文件(可执行文件).图片.音频.视频.pli ...
- canvas-a10isPointPath2.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 转——Android应用开发性能优化完全分析
[工匠若水 http://blog.csdn.net/yanbober 转载请注明出处.] 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉 ...
- openstack openrpc
- SQLServer、MySQL、Oracle语法差异小集锦
一.差异集锦 在建表的时候,只有自增的语法不同. 下面给出3种数据库通用的建表与初始化测试语句: CREATE TABLE Country( Id int PRIMARY KEY, Name ) ); ...
- CSS 之 Opacity多浏览器透明度兼容处理
用来设定元素透明度的 Opacity 是CSS 3里的一个属性.当然现在还只有少部分浏览器支持. 不过各个浏览器都有自己的私有属性来支持,其中包括老版本的Mozilla和Safari: IE: fil ...