您的位置:首页 > 编程语言 > C#

c# 发送Email的2中方式

2016-05-26 09:28 447 查看
先来第一种

// 版权所有 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加密的时候,你就呵呵一下,第二种不行了,然后你可以尝试第一种了,最少我这里是这种情况。

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

有什么问题,请留言吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: