流星小筑
火流星一闪即逝,只留给人们许下心愿的瞬间

导航

 
                                90%使用WebDAV开发的Exchange邮件管理(五
                                                                                       —— 剩下的10%用来发邮件

        在上文中,知道了邮件的基本格式,但我还是没有办法来通过WebDav来构造出带附件的邮件,虽然基本思路是这样:用代码生成随机的boundary字符串,然后把上传的文件转成Base64编码,通通附加到邮件里。但怎么尝试也没有成功,后来在老外的blog上发现也是说要自己构造一个文本的邮件体,后来发了邮件过去问,但是没有回音。应该是我的英文写得太烂,这是我唯一一次像老外请教没有回复的,不像某VIP,MSDN上Remoting客户端委托文章的例子根本跑不了,(基本的允许反序列化的代码都没有)还不回邮件。
        
一、发送邮件
       最后还是通过CDO来做这一块了,所以偶的标题就是90%了。过程如下:
        1、添加CDO组件的引用。
        2、代码:
       
try
            
{    
                CDO.MessageClass Mail
=new CDO.MessageClass();
                Mail.To
=this.TBTo.Text;
                Mail.CC
=this.TBCc.Text;
                Mail.BCC
=this.TBBcc.Text;
                Mail.Subject
=this.TBSubject.Text;
                Mail.From
=User.Identity.Name;    
                Mail.TextBody
=this.FreeTextBox1.Text;
            
                
string userID=User.Identity.Name.Trim();
                
string strPassword=DAL.Data.UserModel.SelectByUserId(userID).Password.Trim();
                
                
string[] filename=this.TBAttachment.Value.ToString().Split(new char[] {','});
                
foreach(string s in filename)
                
{
                    
if(s!=String.Empty)
                    
{
                          Mail.AddAttachment(Server.MapPath(
"MailAttachment/"+s),userID,strPassword);
                    }

                }

                Mail.Send();    
                Response.Write(
"<script>alert(\"邮件已发送成功\")</script>");
            }

            
catch(Exception ex)
            
{
                Response.Write(
"<script>alert(\""+ex.Message+"\")</script>");
            }
这段代码在调试的时候没有任何问题,但是当部署到别的机器时,出了新的问题,也引出了下面的内容。

二、CDO.Configuration
        系统部署的时候,当运行到发送邮件,提示说SendUsing错误。当初我的机器上没有装Exchange,写的代码可以运行,但我不知道邮件发到哪去了。而在装了Exchange的机器上,都是使用本机的Exchange来发送的。我个人认为,确切的说,是与Web服务器同域的Exchange服务器。那么这里CDO.dll是怎么工作的呢?
        CdoPostUsing有这么两个枚举值,具体参看SDK.http://msdn2.microsoft.com/en-us/library/ms527265.aspx

cdoSendUsingPickup

1

Send message using the local SMTP service pickup directory.

cdoSendUsingPort

2

Send the message using the network (SMTP over the network).

posted on 2005-11-01 17:01  风渐寒pro  阅读(1094)  评论(3编辑  收藏  举报