我正在尝试使用Microsoft Word文档作为Microsoft Outlook电子邮件的正文。到目前为止,我已经能够使用代码将Word .docx中的文本包含到电子邮件正文中:
if (File.Exists(fileName.ToString()))
{
DateTime today = DateTime.Now;
object readOnly = false;
object isVisible = false;
//Set Word to invisible
wordApp.Visible = false;
//Open the word document
aDoc = wordApp.Documents.Open(ref fileName, ref missing, ref readOnly, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref isVisible, ref missing, ref missing, ref missing, ref missing);
try
{
//Activate Document
aDoc.Activate();
//Find Place Holders and replace them with values
this.FindAndReplace(wordApp, "<NameAddressed>", NameAddressed);
this.FindAndReplace(wordApp, "<SessionInfo>", SessionInfo);
this.FindAndReplace(wordApp, "<NumberGuests>", GuestNumber);
this.FindAndReplace(wordApp, "<Balance>", Balance);
//Postal
this.FindAndReplace(wordApp, "<FullName>", FullName);
this.FindAndReplace(wordApp, "<Address1>", Address1);
if (Address2 != " " && Address2 != "" && Address2 != " ")
this.FindAndReplace(wordApp, "<Address1>", Address1 + "\n\r" + Address2);
else
this.FindAndReplace(wordApp, "<Address1>", Address1);
this.FindAndReplace(wordApp, "<City>", City);
this.FindAndReplace(wordApp, "<State>", State);
this.FindAndReplace(wordApp, "<Zip>", Zip);
}
catch (Exception ex)
{
aDoc.Close(ref missing, ref missing, ref missing);
ClientScript.RegisterStartupScript(this.GetType(), "error", "javascript:;alert('" + ex.Message + "')");
return false;
}
aDoc.SaveAs(ref saveAs);
//Save the file as the correct file name
if (DataType.Text == "Email")
{
Outlook.Application oApp = new Outlook.Application();
// Create a new mail item.
Outlook.MailItem eMail = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
Word.Range r = aDoc.Content;
r.Select();
string s = r.Text;
eMail.Subject = "Confirmation Email";
eMail.To = "example@xyz.com";
eMail.Body = s;
((Outlook._MailItem)eMail).Send();
//Close the document - you have to do this
aDoc.Close(ref missing, ref missing, ref missing);
}
litError.Text = "File Created. ";
return true;
}
else
{
litError.Visible = true;
litError.Text = "File Does Not Exist";
return false;
}
但是此代码不会包含电子邮件中Word文档中的图像。是否有任何方法可以将.docx的图像发送到Outlook并保留其原始格式? 提前致谢
答案 0 :(得分:2)
首先,您要设置纯文本MailItem.Body
属性。
其次,创建附件并使用PR_ATTACH_CONTENT_ID
设置"http://schemas.microsoft.com/mapi/proptag/0x3712001F"
属性(DASL名称Attachment.PropertyAccessor.SetProperty
)。
您的HTML正文(MailItem.HTMLBody
属性)需要通过cid属性引用该图像附件:
<img src="cid:xyz">
其中xyz是PR_ATTACH_CONTENT_ID
属性的值。
查看包含OutlookSpy的现有邮件(单击IMessage按钮)。
编辑:示例脚本(在我的头顶):
attachment = MailItem.Attachments.Add("c:\temp\MyPicture.jpg")
attachment.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", "MyId1")
MailItem.HTMLBody = "<html><body>Test image <img src=""cid:MyId1""></body></html>"