我有一个现成的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或其他东西实现我想要的东西?
答案 0 :(得分:0)
请不要使用CDO,它可以追溯到计算机仍然使用烟雾信号来交换电子邮件的时代。 System.Net.Mail包含您需要的一切,MailMessage是您的朋友。注意它的IsBodyHtml属性。
答案 1 :(得分:0)
可以通过CDO.Message(有必要添加到项目引用COM库“Microsoft CDO for Windows 2000 Library”):
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
}
}