0

(Aspose.Words から) バイト配列として生成された MHTML が用意されており、それを電子メールとして送信したいと考えています。私は 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();

このスニペットでは、警告変数に byte[] である Body プロパティがあります。上記のコードで「NEED MAGIC HERE」と書かれている場所では、この byte[] を使用して CDO メッセージの本文を設定します。

私は次のことを試しましたが、当然のことながら機能しません。

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

CDOSYSなどで私が望むものを達成する方法を知っている人はいますか?

4

2 に答える 2

0

CDO.Messageを介して可能です(プロジェクト参照COMライブラリ「MicrosoftCDO for Windows 2000ライブラリ」に追加する必要があります):

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
    }
}
于 2010-11-16T17:08:46.957 に答える
0

CDO は使用しないでください。コンピュータがまだ煙信号を使用して電子メールを交換していた時代にさかのぼります。System.Net.Mail には必要なものがすべて含まれています。MailMessage はあなたの友達です。その IsBodyHtml プロパティに注意してください。

于 2010-06-08T00:31:17.590 に答える