繁体   English   中英

通过C#使用CDOSYS发送已经生成的MHTML吗?

[英]Send already generated MHTML using CDOSYS through C#?

我已经准备好生成一个MHTML作为字节数组(来自Aspose.Words),并希望将其作为电子邮件发送。 我正在尝试通过CDOSYS进行此操作,尽管可以接受其他建议。 现在,尽管我有以下内容:

        CDO.Message oMsg = new CDO.Message();
        CDO.IConfiguration iConfg = oMsg.Configuration;
        Fields oFields = iConfg.Fields;

        // Set configuration.
        Field oField = oFields["http://schemas.microsoft.com/cdo/configuration/sendusing"];
        oField.Value = CDO.CdoSendUsing.cdoSendUsingPort;
        oField = oFields["http://schemas.microsoft.com/cdo/configuration/smtpserver"];
        oField.Value = SmtpClient.Host;
        oField = oFields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"];
        oField.Value = SmtpClient.Port;
        oFields.Update();

        //oMsg.CreateMHTMLBody("http://www.microsoft.com", CDO.CdoMHTMLFlags.cdoSuppressNone,  "", "");
        // NEED MAGIC HERE :)
        oMsg.Subject = warning.Subject;             // string

        oMsg.From = "system@example.com";
        oMsg.To = warning.EmailAddress;
        oMsg.Send();

在此代码段中,警告变量的Body属性为byte []。 在上面的代码中它在“ NEED MAGIC HERE”处显示的位置,我想使用此byte []设置CDO消息的正文。

我尝试了以下方法,这毫无疑问是行不通的:

oMsg.HTMLBody = System.Text.Encoding.ASCII.GetString(warning.Body);

有人对我如何使用CDOSYS或其他东西实现自己想要的东西有任何想法吗?

请不要使用CDO,它可以追溯到计算机仍然使用烟雾信号交换电子邮件的时代。 System.Net.Mail包含您需要的一切,MailMessage是您的朋友。 请注意其IsBodyHtml属性。

可以通过CDO.Message(必须将其添加到项目引用COM库“ Windows 2000库的Microsoft CDO”中):

protected bool SendEmail(string emailFrom, string emailTo, string subject, string MHTmessage)
{
    string smtpAddress = "smtp.email.com";

    try
    {
      CDO.Message oMessage = new CDO.Message();

      // set message
      ADODB.Stream oStream = new ADODB.Stream();
      oStream.Charset = "ascii";
      oStream.Open();
      oStream.WriteText(MHTmessage);
      oMessage.DataSource.OpenObject(oStream, "_Stream");

      // set configuration
      ADODB.Fields oFields = oMessage.Configuration.Fields;
      oFields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = CDO.CdoSendUsing.cdoSendUsingPort;
      oFields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = smtpAddress;
      oFields.Update();

      // set other values
      oMessage.MimeFormatted = true;
      oMessage.Subject = subject;
      oMessage.Sender = emailFrom;
      oMessage.To = emailTo;
      oMessage.Send();
    }
    catch (Exception ex)
    {
      // something wrong
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM