利用CDO实现邮件阅读或发送回执功能 For .Net

在C#中,原本我一直使用MailMessage和SmtpMail来发送邮件。

由于业务部门提了新的需求,要求在发送邮件的同时希望能够收到“回执”。为此我google了好几天。

发现MailMessage只能实现“已读”回执功能,而无法实现“已发送”回执功能。郁闷....

在友人的帮助下改用CDO来实现,MailMessage的底层应该也是这玩意。现把实现的部分代码张贴如下:

/* 说明:在使用CDO之前需要手工导入cdosys.dll组件。*/

[csharp] view plain copy
  1. using ...  
  2. class Email  
  3. {  
  4.     /* to - 接收者邮件地址;  from - 发送者邮件地址;  subject - 邮件主题;  
  5.         content - 邮件内容(文本内容);  attachments - 附件名称 */  
  6.     public static void Send(string to, string from, string subject,  
  7.                    string content,  string[] attachments)  
  8.    {  
  9.          try  
  10.         {  
  11.                CDO.Message          imsg = new CDO.MessageClass();  
  12.               CDO.Configuration   iconf  = imsg.Configuration;  
  13.               ADODB.Fields           flds = iconf.Fields;  
  14.    
  15.               flds[@"http://schemas.microsoft.com/cdo/configuration/sendusing"].Value = CDO.CdoSendUsing.cdoSendUsingPort;  // 2  
  16.              flds[@"http://schemas.microsoft.com/cdo/configuration/smtpserverport"].Value = 25; // 默认是25端口  
  17.             flds[@"http://schemas.microsoft.com/cdo/configuration/smtpserver"].Value = "<SMTP SERVER>";  // 邮件服务器地址  
  18.             flds.Update();  
  19.    
  20.             imsg.Configuration = iconf;  
  21.            imsg.To        = to;  
  22.            imsg.From   = from;  
  23.            imsg.Subject = subject;  
  24.            imsg.TextBody = content;  
  25.           imsg.Fields[@"urn:schemas:mailheader:disposition-notification-to"].Value = from;  // 设置“已读”回执  
  26.            imsg.Fields[@"urn:schemas:mailheader:return-receipt-to"].Value = from; // 设置“已送达”回执  
  27.            imsg.DSNOptions = CDO.CdoDSNOptions.cdoDSNSuccessFailOrDelay;  
  28.                for (int i = 0; i < attachments.Length; i++)  
  29.                  {  
  30.                    if (File.Exists(attachments[i])  
  31.                              imsg.AddAttachments(attachments[i], """");  
  32.                   }  
  33.                   imsg.Fields.Update();  
  34.                  imsg.Send();  
  35.         }  
  36.         catch (System.Exception e)  
  37.         {  
  38.               // todo....  
  39.         }  
  40.    }  
  41.             
  42. }  


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值