一直想写一个asp能用发送邮件的服务器组件不过用VC太麻烦了一直都没都手
前两天看一篇文章说是asp怎么调用C#写的DLL一试之下果然可以大喜这下用来写一个发送邮件的东东简单了吧
呵呵非常简单一会就弄好了不敢独享先看代码
using System;
using SystemNetMail;
using SystemText;
namespace IMELS
{
public class SendMail
{
public SendMail() { }
private string _to = stringEmpty;
/// <summary>
/// 收件人地址多个用号隔开
/// </summary>
public string To
{
set { _to = value; }
}
private string _from = stringEmpty;
/// <summary>
/// 发件人地址
/// </summary>
public string From
{
set { _from = value; }
}
private string _fromName = stringEmpty;
/// <summary>
/// 发件人显示名称
/// </summary>
public string FromName
{
set { _fromName = value; }
}
private string _cc = stringEmpty;
/// <summary>
/// 抄送多个用号隔开
/// </summary>
public string CC
{
set { _cc = value; }
}
private string _bcc = stringEmpty;
/// <summary>
/// 密抄多个用号隔开
/// </summary>
public string BCC
{
set { _bcc = value; }
}
private string _charset = GB;
/// <summary>
/// 邮件正文的编码
/// </summary>
public string Charset
{
set { _charset = value; }
}
private string _contentType = html;
/// <summary>
/// 邮件格式(html or txt)
/// </summary>
public string ContentType
{
set { _contentType = value; }
}
private string _subject = stringEmpty;
/// <summary>
/// 邮件标题
/// </summary>
public string Subject
{
set { _subject = value; }
}
private string _body = stringEmpty;
/// <summary>
/// 邮件内容
/// </summary>
public string Body
{
set { _body = value; }
}
private string _smtp;
/// <summary>
/// SMTP服务器地址
/// </summary>
public string Smtp
{
set { _smtp = value; }
}
private string _username;
/// <summary>
/// SMTP用户名
/// </summary>
public string Username
{
set { _username = value; }
}
/// <summary>
/// SMTP密码
/// </summary>
private string _password;
public string Password
{
set { _password = value; }
}
private int _port = ;
/// <summary>
/// SMTP商品
/// </summary>
public int Port
{
set { _port = value; }
}
/// <summary>
/// 发送
/// </summary>
public void Send()
{
MailAddress from = new MailAddress(_from _fromName);
MailMessage message = new MailMessage();
messageFrom = from;
string[] toadd = _toSplit();
foreach (string _add in toadd)
{
try
{
messageToAdd(new MailAddress(_add));
}
catch(Exception e)
{
_error += To Address Error : + eMessage + ( + _add + );;
}
}
if (_cc != stringEmpty)
{
string[] ccadd = _ccSplit();
foreach (string _add in ccadd)
{
try
{
messageCCAdd(new MailAddress(_add));
}
catch (Exception e)
{
_error += CC Address Error : + eMessage + ( + _add + );;
}
}
}
if (_bcc != stringEmpty)
{
string[] bccadd = _bccSplit();
foreach (string _add in bccadd)
{
try
{
messageBccAdd(new MailAddress(_add));
}
catch (Exception e)
{
_error += BCC Address Error : + eMessage + ( + _add + );;
}
}
}
messageSender = from;
messageSubject = _subject;
messageBody = _body;
if (_contentType == html || _contentType == stringEmpty)
{
messageIsBodyHtml = true;
}
else
{
messageIsBodyHtml = false;
}
messageBodyEncoding = EncodingGetEncoding(_charset);
messageDeliveryNotificationOptions = DeliveryNotificationOptionsNone;
SmtpClient __smtp = new SmtpClient();
__smtpHost = _smtp;
__smtpPort = _port;
__smtpUseDefaultCredentials = false;
__smtpCredentials = new SystemNetNetworkCredential(_username _password);
__smtpDeliveryMethod = SmtpDeliveryMethodNetwork;
try
{
__smtpSend(message);
}
catch (SmtpException e)
{
_error += SMTP Error: + eMessage + ;;
}
}
private string _error = stringEmpty;
/// <summary>
/// 返回错误信息
/// </summary>
public string Error
{
get { return _error; }
}
/// <summary>
/// 清空错误信息
/// </summary>
public void ClearErr()
{
_error = stringEmpty;
}
}
}
说一下具体实现过程
首先新建一个类库项目打开项目属性页在应用程序标签设置程序集名称为IMELS(当然这个你可以设置为你喜欢的名字)输出类型为类库如图
点击程序集信息勾选使程序集COM可见如图
签名标签勾选为程序签名如图
然后在选择强名称密钥文件下拉列表中选择密钥文件如果没有密钥文件就选择新建这里我选择新建如图
在密钥文件名称栏里输入密钥的名称你可以选择为密钥添加密码保护它我这里没有使用密码
然后为项目添加一个类SendMail 代码就如上了
代码完成后生成DLL文件把DLL放到D盘或别的什么盘不过最好不要放在系统盘然后就是注册了注册C#写的DLL是不能用regsvr的要用regasm格式为regasm /codebase dDLLIMELSdll
这样DLL的编写和注册都已完成了下面就是应用了asp中调用方法如下
<%
dimsend
setsend=ServerCreateObject(IMELSSendMail)
sendFrom=
sendFromName=无问
sendSmtp=
sendUsername=用户名
sendPassword=密码
sendSubject=asp调用C#编写的DLL发送邮件测试标题
sendContentType=html
sendCharset=gb
sendBody=asp调用C#编写的DLL发送邮件测试正文
sendTo=
sendCC=抄送地址
sendBCC=密抄地址
sendSend()
ResponseWrite(sendError)
%>
好了大功告成!!