簡體   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