先来第一种

 // 版权所有 ZhuoYue Co.,Ltd 卓越一通秘密信息
// 文件名称:MyEmailByCDO.cs
// 作  者:huangzh
// 创建日期:2015-08-20 16:18:27
// 功能描述:发送邮件MyEmailByCDO
// 任务编号:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ZhuoYueE.Bpc.Core.Email
{ /// <summary>
/// 功能描述:发送邮件MyEmailByCDO
/// 作  者:huangzh
/// 创建日期:2015-08-20 16:18:24
/// 任务编号:
/// </summary>
public class MyEmailByCDO
{
///<summary>
/// 构造函数
///</summary>
///<param name="strserver">发件箱的邮件服务器地址</param>
///<param name="strtoMail">收件人地址(可以是多个收件人,程序中是以“;"进行区分的)</param>
///<param name="strfromMail">发件人地址</param>
///<param name="strsubject">邮件标题</param>
///<param name="stremailBody">邮件内容(可以以html格式进行设计)</param>
///<param name="strpassword">发件人邮箱密码</param>
///<param name="intport">发送邮件所用的端口号(htmp协议默认为25)</param>
///<param name="blnsslEnable">true表示对邮件内容进行socket层加密传输,false表示不加密</param>
///<param name="strCC">抄送人</param>
public static void SendMyEmailByCDO(string strserver,
string strtoMail,
string strfromMail,
string strsubject,
string stremailBody,
string strpassword,
int intport,
bool blnsslEnable,
string strCC)
{
SendMyEmailByCDO(strserver,
strtoMail,
strfromMail,
strsubject,
stremailBody,
strpassword,
intport,
blnsslEnable,
strCC,
null);
} ///<summary>
/// 构造函数
///</summary>
///<param name="strserver">发件箱的邮件服务器地址</param>
///<param name="strtoMail">收件人地址(可以是多个收件人,程序中是以“;"进行区分的)</param>
///<param name="strfromMail">发件人地址</param>
///<param name="strsubject">邮件标题</param>
///<param name="stremailBody">邮件内容(可以以html格式进行设计)</param>
///<param name="strpassword">发件人邮箱密码</param>
///<param name="intport">发送邮件所用的端口号(htmp协议默认为25)</param>
///<param name="blnsslEnable">true表示对邮件内容进行socket层加密传输,false表示不加密</param>
/// <param name="strCC">抄送人</param>
/// <param name="files">附件</param>
public static void SendMyEmailByCDO(
string strserver,
string strtoMail,
string strfromMail,
string strsubject,
string stremailBody,
string strpassword,
int intport,
bool blnsslEnable,
string strCC,
List<string> files)
{
string stryourEmail = strfromMail;
CDO.Message message = new CDO.Message();
CDO.IConfiguration configuration = message.Configuration;
ADODB.Fields fields = configuration.Fields; Console.WriteLine(String.Format("Configuring CDO settings...")); ADODB.Field field = fields["http://schemas.microsoft.com/cdo/configuration/smtpserver"];
field.Value = strserver; field = fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"];
field.Value = intport; field = fields["http://schemas.microsoft.com/cdo/configuration/sendusing"];
field.Value = CDO.CdoSendUsing.cdoSendUsingPort; field = fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"];
field.Value = CDO.CdoProtocolsAuthentication.cdoBasic; field = fields["http://schemas.microsoft.com/cdo/configuration/sendusername"];
field.Value = stryourEmail; field = fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"];
field.Value = strpassword; field = fields["http://schemas.microsoft.com/cdo/configuration/smtpusessl"];
field.Value = blnsslEnable.ToString().ToLower(); fields.Update(); Console.WriteLine(String.Format("Building CDO Message...")); message.From = stryourEmail;
message.To = strtoMail;
message.Subject = strsubject;
message.BodyPart.Charset = "utf-8"; if (!string.IsNullOrEmpty(strCC))
{
message.CC = strCC;
} message.HTMLBody = stremailBody;
if (files != null)
{
foreach (string stritem in files)
{
message.AddAttachment(stritem);
}
} Console.WriteLine(String.Format("Attempting to connect to remote server...")); // Send message.
message.Send();
}
}
}

第二种

 // 版权所有 ZhuoYue Co.,Ltd 卓越一通秘密信息
// 文件名称:MyEmail.cs
// 作  者:huangzh
// 创建日期:2015-08-20 08:37:07
// 功能描述:邮件辅助类
// 任务编号:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net.Mime;
using System.IO; namespace ZhuoYueE.Bpc.Core.Email
{
/// <summary>
/// 功能描述:邮件辅助类
/// 作  者:huangzh
/// 创建日期:2015-08-20 08:36:52
/// 任务编号:
/// </summary>
public class MyEmailBySmtp
{
/// <summary>
/// 主要处理发送邮件的内容(如:收发人地址、标题、主体、图片等等)
/// </summary>
private MailMessage m_mailMessage;
/// <summary>
/// 主要处理用smtp方式发送此邮件的配置信息(如:邮件服务器、发送端口号、验证方式等等)
/// </summary>
private SmtpClient m_smtpClient;
/// <summary>
/// 发送邮件所用的端口号(htmp协议默认为25)
/// </summary>
private int m_intsenderPort;
/// <summary>
/// 发件箱的邮件服务器地址(IP形式或字符串形式均可)
/// </summary>
private string m_strsenderServerHost;
/// <summary>
/// 发件箱的密码
/// </summary>
private string m_strsenderPassword;
/// <summary>
/// 发件箱的用户名(即@符号前面的字符串,例如:hello@163.com,用户名为:hello)
/// </summary>
private string m_strsenderUsername;
/// <summary>
/// 是否对邮件内容进行socket层加密传输
/// </summary>
private bool m_blnsnableSsl;
/// <summary>
/// 抄送
/// </summary>
private string m_strCC; ///<summary>
/// 构造函数
///</summary>
///<param name="strserver">发件箱的邮件服务器地址</param>
///<param name="strtoMail">收件人地址(可以是多个收件人,程序中是以“;"进行区分的)</param>
///<param name="strfromMail">发件人地址</param>
///<param name="strsubject">邮件标题</param>
///<param name="stremailBody">邮件内容(可以以html格式进行设计)</param>
///<param name="strusername">发件箱的用户名(即@符号前面的字符串,例如:hello@163.com,用户名为:hello)</param>
///<param name="strpassword">发件人邮箱密码</param>
///<param name="intport">发送邮件所用的端口号(htmp协议默认为25)</param>
///<param name="blnsslEnable">true表示对邮件内容进行socket层加密传输,false表示不加密</param>
///<param name="strCC">抄送</param>
public MyEmailBySmtp(
string strserver,
string strtoMail,
string strfromMail,
string strsubject,
string stremailBody,
string strusername,
string strpassword,
int intport,
bool blnsslEnable,
string strCC)
{
try
{ m_mailMessage = new MailMessage();
m_mailMessage.To.Add(strtoMail);
m_mailMessage.From = new MailAddress(strfromMail, strfromMail, Encoding.UTF8);
m_mailMessage.Subject = strsubject;
m_mailMessage.Body = stremailBody;
m_mailMessage.IsBodyHtml = true;
m_mailMessage.BodyEncoding = System.Text.Encoding.UTF8;
m_mailMessage.Priority = MailPriority.High;
m_mailMessage.CC.Add(strCC);
this.m_strsenderServerHost = strserver;
this.m_strsenderUsername = strusername;
this.m_strsenderPassword = strpassword;
this.m_intsenderPort = intport;
this.m_blnsnableSsl = blnsslEnable;
}
catch
{
throw;
}
} ///<summary>
/// 添加附件
///</summary>
///<param name="strattachmentsPath">附件的路径集合,以分号分隔</param>
public void AddAttachments(string strattachmentsPath)
{
try
{
//以什么符号分隔可以自定义
string[] path = strattachmentsPath.Split(';');
Attachment data;
ContentDisposition disposition;
for (int i = ; i < path.Length; i++)
{
data = new Attachment(path[i], MediaTypeNames.Application.Octet);
disposition = data.ContentDisposition;
disposition.CreationDate = File.GetCreationTime(path[i]);
disposition.ModificationDate = File.GetLastWriteTime(path[i]);
disposition.ReadDate = File.GetLastAccessTime(path[i]);
m_mailMessage.Attachments.Add(data);
} }
catch
{
throw;
}
} ///<summary>
/// 邮件的发送
///</summary>
public void Send()
{
try
{ if (m_mailMessage != null)
{
m_smtpClient = new SmtpClient();
m_smtpClient.Host = this.m_strsenderServerHost;
m_smtpClient.Port = m_intsenderPort;
m_smtpClient.UseDefaultCredentials = true;
m_smtpClient.EnableSsl = this.m_blnsnableSsl;
m_smtpClient.Credentials = new System.Net.NetworkCredential(this.m_strsenderUsername, this.m_strsenderPassword);
m_smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; m_smtpClient.Send(m_mailMessage);
} }
catch
{
throw;
}
}
}
}

为什么这里写了2中方式呢???

我相信大多数人发送邮件使用第二种,但是有时候第二种方式是发不出去的,那么什么情况发布出去呢???

答曰:

当你使用公司内部邮件服务器发送邮件,并且需要SSL加密的时候,你就呵呵一下,第二种不行了,然后你可以尝试第一种了,最少我这里是这种情况。

我现在发送邮件的一般都用第一种的代码了。

有什么问题,请留言吧。

c# 发送Email的2中方式的更多相关文章

  1. Python 发送 email 的两种方式

    Python发送email的两种方式,分别为使用登录邮件服务器.调用sendmail命令来发送三种方法 Python发送email比较简单,可以通过登录邮件服务来发送,linux下也可以使用调用sen ...

  2. [Python] 发送email的几种方式

    python发送email还是比較简单的,能够通过登录邮件服务来发送,linux下也能够使用调用sendmail命令来发送,还能够使用本地或者是远程的smtp服务来发送邮件,无论是单个,群发,还是抄送 ...

  3. 发送email给列表中的邮箱--python

    #!/usr/bin/python # -*- coding: utf-8 -*- # from email.Header import Header from email.MIMEText impo ...

  4. Android开发中怎样调用系统Email发送邮件(多种调用方式)

    在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外,所谓的调用Email,只是说Email可以接收Intent并做这些事情 我们都知道,在Android中 ...

  5. 使用PHP发送email进行账号激活或者密码修改操作

    使用PHPMailer编写发送邮件 PHPMailer需PHP的socket扩展支持,而PHPMailer链接qq域名邮箱时需要ssl加密方式(qq邮箱最近做了限制,新开域名邮箱不再允许通过smtp协 ...

  6. 使用Spring发送Email

    配置Spring发送邮件 Spring发送邮件底层还是使用JavaMail,我在http://www.cnblogs.com/lz2017/p/6882925.html 中记录过关于JavaMail的 ...

  7. Log4j 发送 EMail 的配置

    项目上线后,运行时往往也还会有异常发生,在异常抛出时,希望即时的得到反馈.所以需要配置LOG4J的发送EMAIL功能. 项目中原来使用的的Log4j版本为1.2.9 ,但此版本并不支持邮件服务的认证功 ...

  8. 第19章-使用Spring发送Email

    1 配置Spring发送邮件 Spring Email抽象的核心是MailSender接口.顾名思义,MailSender的实现能够通过连接Email服务器实现邮件发送的功能,如图19.1所示. 图1 ...

  9. 廖雪峰Java13网络编程-2Email编程-1发送email

    1.邮件发送 1.1传统邮件发送: 传统的邮件是通过邮局投递,从一个邮局到另一个邮局,最终到达用户的邮箱. 1.2电子邮件发送: 与传统邮件类似,它是从用户电脑的邮件软件(如outlook)发送到邮件 ...

随机推荐

  1. OJ提交题目中的语言选项里G++与C++的区别(转载)

    原文链接:http://blog.polossk.com/201405/c-plus-plus-g-plus-plus G++? 首先更正一个概念,C++是一门计算机编程语言,G++不是语言,是一款编 ...

  2. Repository模式

    Repository模式的两种写法与疑惑 现如今DDD越来越流行,园子里漫天都是介绍关于它的文章.说到DDD就不能不提Repository模式了,有的地方也叫它仓储模式. 很多时候我们对Reposit ...

  3. crawler_x-requested-with 请求头

    在分析微博热点话题时  拿到异步请求后,有个关键参数 x-request-with 不携带不给正确响应 在服务器端判断request来自Ajax请求(异步)还是传统请求(同步): 两种请求在请求的He ...

  4. oracle_有关表分区_查询

    <!--查询ORACLE分区表存在多少个分区-->  SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='TBL_PAGE';  < ...

  5. Com组件的内存分配和释放,CredentialProvider SHStrDup 字符串拷贝问题

    一.简单介绍 熟悉CredentialProvider的同学应该知道,他为一个Com组件,于是,在这里的内存分配(字符串拷贝)的一系列操作就要依照con的标准来. 二.Com组件的内存分配和释放 CO ...

  6. applet授权数字签名

    一.压缩你的class类文件为jar包 1.如果你的须要压缩的类文件存在的包为:cn.mbq.test1和cn.mbq.test2 2.进入你的classes文件夹,在DOS窗体中运行命令:jar c ...

  7. 关于WebBrowser.DocumentCompleted事件

    原文:关于WebBrowser.DocumentCompleted事件 今天发现使用WebBrowser时载入一个页面后DocumentCompleted事件会被调用2次,后来发现这两次WebBrow ...

  8. 使用jquery实现放大镜效果

    原文:使用jquery实现放大镜效果 实现原理 首先,我们讲解一下放大镜效果的实现方式: 方法一:准备一张高像素的大图,当鼠标放到原图上,加载显示大图的对应位置. 方法二:对原图片进行放大,也就是调整 ...

  9. Hibernate 之强大的HQL查询

    Hibernate  配备了一种非常强大的查询语言,这种语言看上去很像  SQL.但是不要被语法结构上的相似所迷惑,HQL  是非常有意识的被设计为完全面向对象的查询,它可以理解如继承.多态和关联之类 ...

  10. SQL Server 2008 R2中,变表的右键弹出菜单中的“选择前1000行”为“选择所有行”

    原文:SQL Server 2008 R2中,变表的右键弹出菜单中的"选择前1000行"为"选择所有行" 从SQL Server 2008开始,微软为了提高查询 ...