我用C#采用System.Web.Mail做了一个发邮件的程序,MailMessage的各项参数已经填充完毕了,但是SmtpMail.Send(MailMessage);这条语句总是出“SendUsing”配置值无效这种错误,请各位高人指点。 

解决方案 »

  1.   


    引用CDO组件 CDOSYS.DLL
    using System;
    using System.Web.Mail;
    using CDO;
    namespace Greystar.Base.Office
    {
    /// <summary>
    /// Email 的摘要说明。
    /// </summary>
    public class Email
    {
    public Email()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } #region  SendEmailValidate (string Emailfrom,string Emailto,string subject,string mailbody)
    /// <summary>
    /// 要求有帐号
    /// </summary>
    /// <param name="Emailfrom"></param>
    /// <param name="Emailto"></param>
    /// <param name="subject"></param>
    /// <param name="mailbody"></param>
    public void SendEmailValidate (string Emailfrom,string Emailto,string subject,string mailbody)
    {
    string ErrString="";
    try
    {
    Configuration conf=new Configuration();
    //以下部分设置参数(服务器,端号,用户名,密码,发送邮件帐号,回复邮箱帐号)
    conf.Fields[CdoConfiguration.cdoSendUsingMethod].Value=CdoSendUsing.cdoSendUsingPort;
    conf.Fields[CdoConfiguration.cdoSMTPServer].Value="server-mail";
    conf.Fields[CdoConfiguration.cdoSMTPServerPort].Value=25;
    conf.Fields[CdoConfiguration.cdoSMTPAccountName].Value="greystar";
    conf.Fields[CdoConfiguration.cdoSendUserReplyEmailAddress].Value="\"greystar\" <[email protected]>";
    conf.Fields[CdoConfiguration.cdoSendEmailAddress].Value="\"greystar\" <[email protected]>";
    conf.Fields[CdoConfiguration.cdoSMTPAuthenticate].Value=CdoProtocolsAuthentication.cdoBasic;
    conf.Fields[CdoConfiguration.cdoSendUserName].Value="greystar";
    conf.Fields[CdoConfiguration.cdoSendPassword].Value="liaoliao";
        
    conf.Fields.Update();
    MessageClass msg=new MessageClass(); msg.Configuration=conf;

    msg.To=Emailto;
    msg.Subject= subject;
    msg.HTMLBody=mailbody;
    msg.From=Emailfrom; msg.Send();  
    ErrString="确认成功";
    }
    catch(System.Runtime.InteropServices.COMException Ee)
    {  
    ErrString=Ee.Message;
    throw new Exception(ErrString);
    }
    }
    #endregion  #region SendMail(string MailFrom,string MailTo,string MailSubject,string MailBody,string MailServer  )
    /// <summary>
    /// 匿名访问
    /// </summary>
    /// <param name="MailFrom"></param>
    /// <param name="MailTo"></param>
    /// <param name="MailSubject"></param>
    /// <param name="MailBody"></param>
    /// <param name="MailServer"></param>
    public void SendMail(string MailFrom,string MailTo,string MailSubject,string MailBody,string MailServer  ) { MailMessage Msg = new MailMessage(); Msg.To      = MailTo; Msg.Subject = MailSubject; Msg.Body    = MailBody; Msg.From =MailFrom; SmtpMail.SmtpServer=MailServer; SmtpMail.Send(Msg); return; }
    #endregion
    }
    }
      

  2.   

    多谢ziyan0218了,我发现错误是因为我没有为SmtpMail.SmtpServer付值,此帖结帖。