c# 发送Email的2中方式
2016-05-26 09:28
447 查看
先来第一种
View Code
为什么这里写了2中方式呢???
我相信大多数人发送邮件使用第二种,但是有时候第二种方式是发不出去的,那么什么情况发布出去呢???
答曰:
当你使用公司内部邮件服务器发送邮件,并且需要SSL加密的时候,你就呵呵一下,第二种不行了,然后你可以尝试第一种了,最少我这里是这种情况。
我现在发送邮件的一般都用第一种的代码了。
有什么问题,请留言吧。
// 版权所有 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 = 0; 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; } } } }
View Code
为什么这里写了2中方式呢???
我相信大多数人发送邮件使用第二种,但是有时候第二种方式是发不出去的,那么什么情况发布出去呢???
答曰:
当你使用公司内部邮件服务器发送邮件,并且需要SSL加密的时候,你就呵呵一下,第二种不行了,然后你可以尝试第一种了,最少我这里是这种情况。
我现在发送邮件的一般都用第一种的代码了。
有什么问题,请留言吧。
相关文章推荐
- c#简易反射调用泛型方法
- c#遍历并判断实体或类的成员属性
- XML-6处理(C#—XML读取、增加、修改和删除操作 )A-B版本
- 30天C#基础巩固------读写流(StreamWrite/StreamReader)
- C#4.0中var和dynamic的区别
- 【经典算法】迷宫找路径C#版
- 【经典算法】八皇后问题C#版
- 采用C#编程的ModBus协议的实现
- C#虚方法的重写
- C# 编写点击图片框计算出在文件中的像素点
- C# 编写命令行交互工具——实时输出_获取执行结果
- C# 读写文件操作
- C# ListView 编写 ListView 实体类
- C#文件流
- 【每日算法】删减字符获得最大回文符
- C#Winform实现高效率导入和导出Excel文件
- C#中菜单栏,工具栏,状态栏的学习总结
- C#将托管DLL嵌入exe文件
- 用C#模版匹配识别新教务系统登录验证码
- C#实验8(2)