c# 发送Email的2中方式
先来第一种
// 版权所有 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中方式的更多相关文章
- Python 发送 email 的两种方式
Python发送email的两种方式,分别为使用登录邮件服务器.调用sendmail命令来发送三种方法 Python发送email比较简单,可以通过登录邮件服务来发送,linux下也可以使用调用sen ...
- [Python] 发送email的几种方式
python发送email还是比較简单的,能够通过登录邮件服务来发送,linux下也能够使用调用sendmail命令来发送,还能够使用本地或者是远程的smtp服务来发送邮件,无论是单个,群发,还是抄送 ...
- 发送email给列表中的邮箱--python
#!/usr/bin/python # -*- coding: utf-8 -*- # from email.Header import Header from email.MIMEText impo ...
- Android开发中怎样调用系统Email发送邮件(多种调用方式)
在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外,所谓的调用Email,只是说Email可以接收Intent并做这些事情 我们都知道,在Android中 ...
- 使用PHP发送email进行账号激活或者密码修改操作
使用PHPMailer编写发送邮件 PHPMailer需PHP的socket扩展支持,而PHPMailer链接qq域名邮箱时需要ssl加密方式(qq邮箱最近做了限制,新开域名邮箱不再允许通过smtp协 ...
- 使用Spring发送Email
配置Spring发送邮件 Spring发送邮件底层还是使用JavaMail,我在http://www.cnblogs.com/lz2017/p/6882925.html 中记录过关于JavaMail的 ...
- Log4j 发送 EMail 的配置
项目上线后,运行时往往也还会有异常发生,在异常抛出时,希望即时的得到反馈.所以需要配置LOG4J的发送EMAIL功能. 项目中原来使用的的Log4j版本为1.2.9 ,但此版本并不支持邮件服务的认证功 ...
- 第19章-使用Spring发送Email
1 配置Spring发送邮件 Spring Email抽象的核心是MailSender接口.顾名思义,MailSender的实现能够通过连接Email服务器实现邮件发送的功能,如图19.1所示. 图1 ...
- 廖雪峰Java13网络编程-2Email编程-1发送email
1.邮件发送 1.1传统邮件发送: 传统的邮件是通过邮局投递,从一个邮局到另一个邮局,最终到达用户的邮箱. 1.2电子邮件发送: 与传统邮件类似,它是从用户电脑的邮件软件(如outlook)发送到邮件 ...
随机推荐
- 深入探讨 Java 类加载器[转]
原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-classloader/index.html 类加载器(class loader)是 Java™ ...
- Appium在手机浏览器使用滑屏Not yet implemented解决办法。
在手机浏览器使用swipe.scroll等手机特有行为时,因为默认context是WEBVIEW,所有一定要切换回NATIVE_APP才可以使用. python: driver.switch_to.c ...
- c++中&和&&有什么差别
他们不同点在于&&相当一个开关语句,就是说假设&&前面值为false那么他就不继续运行后面的表达式:而&无论前面的值为什么,总是运行其后面的语句. &能 ...
- dedeCMS中单独调用子栏目模板和子栏目的文章时修改源代码给channel和chanenartllist加上limit
在网站文件中找到include-taglib-chanel.lib.php,和chaneartllist.lib.php 下载用php的IDE打开, chanel.php加入limit属性修改如下 & ...
- 关于Cassandra与Thrift在int/text/varint上的暧昧
近期简单写了一个基于Cassandra/C++的日志缓存,虽然是Nosql,但是在实际应用中,还是期望能有部分的临时CQL统计 或+-*/可以支持 所以在针对部分字段入库时,选择了作为整形录入,于是麻 ...
- php生成签名及验证签名
<?php /** * 根据原文生成签名内容 * * @param string $data 原文内容 * * @return string * @author confu */ functio ...
- 【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航
原文:[强烈强烈推荐]<ORACLE PL/SQL编程详解>全原创(共八篇)--系列文章导航 <ORACLE PL/SQL编程详解> 系列文章目录导航 ——通过知识共享树立个人 ...
- Serv-U执行CMD命令
site exec + 命令.比如关机: site exec shutdown -r -t 0 注意,网上很多教程在前面加了一个“quote”,实测根本无效,不知道那些教材是怎么回事. 执行方式有很多 ...
- CodeIgniter学习一:基础知识
1. url片段(CI域名组成说明) example.com/index.php/test/index 第一部分(test):控制器 第二部分(index):方法,动作 如果第二部分 ...
- html5跨域数据传递(postMessage)
在html5中有个支持跨域传递的方法postMessage,可是实现iframe之间的数据传递! 代码如下:数据发送页面 <!DOCTYPE HTML> <html lang=&qu ...