【转】asp调用C#编写的DLL发送邮件

一直想写一个asp能用发送邮件的服务器组件,不过用VC太麻烦了,一直都没都手。

前两天看一篇文章,说是asp怎么调用C#写的DLL,一试之下,果然可以,大喜,这下用来写一个发送邮件的东东简单了吧。

呵呵,非常简单,一会就弄好了,不敢独享,先看代码:

[c-sharp] view plain copy print ?
  1. using System; 
  2. using System.Net.Mail; 
  3. using System.Text; 
  4.  
  5. namespace IMELS 
  6.     public class SendMail 
  7.     { 
  8.         public SendMail() { } 
  9.  
  10.         private string _to = string.Empty; 
  11.  
  12.         /// <summary> 
  13.         /// 收件人地址,多个用“,”号隔开 
  14.         /// </summary> 
  15.         public string To 
  16.         { 
  17.             set { _to = value; } 
  18.         } 
  19.  
  20.         private string _from = string.Empty; 
  21.  
  22.         /// <summary> 
  23.         /// 发件人地址 
  24.         /// </summary> 
  25.         public string From 
  26.         { 
  27.             set { _from = value; } 
  28.         } 
  29.  
  30.         private string _fromName = string.Empty; 
  31.  
  32.         /// <summary> 
  33.         /// 发件人显示名称 
  34.         /// </summary> 
  35.         public string FromName 
  36.         { 
  37.             set { _fromName = value; } 
  38.         } 
  39.  
  40.         private string _cc = string.Empty; 
  41.  
  42.         /// <summary> 
  43.         /// 抄送,多个用“,”号隔开 
  44.         /// </summary> 
  45.         public string CC 
  46.         { 
  47.             set { _cc = value; } 
  48.         } 
  49.  
  50.         private string _bcc = string.Empty; 
  51.  
  52.         /// <summary> 
  53.         /// 密抄,多个用“,”号隔开 
  54.         /// </summary> 
  55.         public string BCC 
  56.         { 
  57.             set { _bcc = value; } 
  58.         } 
  59.  
  60.         private string _charset = "GB2312"
  61.  
  62.         /// <summary> 
  63.         /// 邮件正文的编码 
  64.         /// </summary> 
  65.         public string Charset 
  66.         { 
  67.             set { _charset = value; } 
  68.         } 
  69.  
  70.         private string _contentType = "html"
  71.         /// <summary> 
  72.         /// 邮件格式(html or txt) 
  73.         /// </summary> 
  74.         public string ContentType 
  75.         { 
  76.             set { _contentType = value; } 
  77.         } 
  78.  
  79.         private string _subject = string.Empty; 
  80.         /// <summary> 
  81.         /// 邮件标题 
  82.         /// </summary> 
  83.         public string Subject 
  84.         { 
  85.             set { _subject = value; } 
  86.         } 
  87.  
  88.         private string _body = string.Empty; 
  89.         /// <summary> 
  90.         /// 邮件内容 
  91.         /// </summary> 
  92.         public string Body 
  93.         { 
  94.             set { _body = value; } 
  95.         } 
  96.  
  97.         private string _smtp; 
  98.         /// <summary> 
  99.         /// SMTP服务器地址 
  100.         /// </summary> 
  101.         public string Smtp 
  102.         { 
  103.             set { _smtp = value; } 
  104.         } 
  105.  
  106.         private string _username; 
  107.         /// <summary> 
  108.         /// SMTP用户名 
  109.         /// </summary> 
  110.         public string Username 
  111.         { 
  112.             set { _username = value; } 
  113.         } 
  114.         /// <summary> 
  115.         ///  SMTP密码 
  116.         /// </summary> 
  117.         private string _password; 
  118.  
  119.         public string Password 
  120.         { 
  121.             set { _password = value; } 
  122.         } 
  123.  
  124.         private int _port = 25; 
  125.         /// <summary> 
  126.         /// SMTP商品 
  127.         /// </summary> 
  128.         public int Port 
  129.         { 
  130.             set { _port = value; } 
  131.         } 
  132.  
  133.         /// <summary> 
  134.         /// 发送 
  135.         /// </summary> 
  136.         public void Send() 
  137.         { 
  138.             MailAddress from = new MailAddress(_from, _fromName); 
  139.             MailMessage message = new MailMessage(); 
  140.             message.From = from; 
  141.              
  142.             string[] toadd = _to.Split(','); 
  143.             foreach (string _add in toadd) 
  144.             { 
  145.                 try 
  146.                 { 
  147.                     message.To.Add(new MailAddress(_add)); 
  148.                 } 
  149.                 catch(Exception e) 
  150.                 { 
  151.                     _error += "To Address Error : " + e.Message + "(" + _add + ");"
  152.                 } 
  153.             } 
  154.  
  155.             if (_cc != string.Empty) 
  156.             { 
  157.  
  158.                 string[] ccadd = _cc.Split(','); 
  159.  
  160.                 foreach (string _add in ccadd) 
  161.                 { 
  162.                     try 
  163.                     { 
  164.                         message.CC.Add(new MailAddress(_add)); 
  165.                     } 
  166.                     catch (Exception e) 
  167.                     { 
  168.                         _error += "CC Address Error : " + e.Message + "(" + _add + ");"
  169.                     } 
  170.                 } 
  171.             } 
  172.             if (_bcc != string.Empty) 
  173.             { 
  174.                 string[] bccadd = _bcc.Split(','); 
  175.  
  176.                 foreach (string _add in bccadd) 
  177.                 { 
  178.                     try 
  179.                     { 
  180.                         message.Bcc.Add(new MailAddress(_add)); 
  181.                     } 
  182.                     catch (Exception e) 
  183.                     { 
  184.                         _error += "BCC Address Error : " + e.Message + "(" + _add + ");"
  185.                     } 
  186.                 } 
  187.             } 
  188.  
  189.             message.Sender = from; 
  190.             message.Subject = _subject; 
  191.             message.Body = _body; 
  192.  
  193.             if (_contentType == "html" || _contentType == string.Empty) 
  194.             { 
  195.                 message.IsBodyHtml = true
  196.             } 
  197.             else 
  198.             { 
  199.                 message.IsBodyHtml = false
  200.             } 
  201.  
  202.             message.BodyEncoding = Encoding.GetEncoding(_charset); 
  203.             message.DeliveryNotificationOptions = DeliveryNotificationOptions.None; 
  204.             SmtpClient __smtp = new SmtpClient(); 
  205.             __smtp.Host = _smtp; 
  206.             __smtp.Port = _port; 
  207.             __smtp.UseDefaultCredentials = false
  208.             __smtp.Credentials = new System.Net.NetworkCredential(_username, _password); 
  209.             __smtp.DeliveryMethod = SmtpDeliveryMethod.Network; 
  210.             try 
  211.             { 
  212.                 __smtp.Send(message); 
  213.             } 
  214.             catch (SmtpException e) 
  215.             { 
  216.                 _error += "SMTP Error:" + e.Message + ";"
  217.             } 
  218.              
  219.         } 
  220.  
  221.         private string _error = string.Empty; 
  222.         /// <summary> 
  223.         /// 返回错误信息 
  224.         /// </summary> 
  225.         public string Error 
  226.         { 
  227.             get { return _error; } 
  228.         } 
  229.         /// <summary> 
  230.         /// 清空错误信息 
  231.         /// </summary> 
  232.         public void ClearErr() 
  233.         { 
  234.             _error = string.Empty; 
  235.         } 
  236.     } 

说一下具体实现过程:

1、首先新建一个类库项目;打开项目属性页,在“应用程序”标签设置程序集名称为“IMELS”(当然,这个你可以设置为你喜欢的名字),输出类型为类库,如图:

点击“程序集信息”,勾选“使程序集COM可见”,如图:

2、“签名”标签,勾选“为程序签名”,如图:

然后“在选择强名称密钥文件”下拉列表中选择密钥文件,如果没有密钥文件,就选择“新建”,这里我选择新建,如图:

在“密钥文件名称”栏里输入密钥的名称,你可以选择为密钥添加密码保护它,我这里没有使用密码。

然后为项目添加一个类“SendMail ”,代码就如上了。

3、代码完成后,生成DLL文件,把DLL放到D:盘或别的什么盘,不过最好不要放在系统盘,然后就是注册了,注册C#写的DLL是不能用regsvr32的,要用regasm,格式为:regasm /codebase d:/DLL/IMELS.dll。

这样DLL的编写和注册都已完成了,下面就是应用了,asp中调用方法如下:

  1. <% 
  2. dim send 
  3. set send = Server.CreateObject("IMELS.SendMail"
  4.  
  5. send.From = "test@163.com" 
  6. send.FromName = "无问" 
  7. send.Smtp = "smtp.163.com" 
  8. send.Username = "用户名" 
  9. send.Password = "密码" 
  10. send.Subject = "asp调用C#编写的DLL发送邮件测试标题" 
  11. send.ContentType = "html" 
  12. send.Charset = "gb2312" 
  13. send.Body = "asp调用C#编写的DLL发送邮件测试正文" 
  14. send.To = "to@163.com" 
  15. send.CC = "抄送地址" 
  16. send.BCC = "密抄地址" 
  17. send.Send() 
  18. Response.Write(send.Error
  19. %> 

好了,大功告成!!


发现好多人都转载了本文章,请转载时加上原文的链接:http://blog.youkuaiyun.com/wlkjhxd/article/details/3999221

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值