我需要在用户签名之后将图像作为电子邮件的一部分嵌入,而不是在电子邮件的末尾,因为如果我发送大型电子邮件的回复,那么嵌入式图像将会出现在电子邮件链的底部
我正在使用VSTO,VS2008 Fwk3.5和Outlook 2007
这是我的代码:
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.ItemSend += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
}
private void Application_ItemSend(object Item, ref bool Cancel)
{
if (Item is Outlook.MailItem)
{
Outlook.MailItem mailMessage = (Outlook.MailItem)Item;
//do something to add the image after the signature
}
}
答案 0 :(得分:9)
最后我解决了这个问题:
private void SendFormatted(Outlook.MailItem mail)
{
if (!string.IsNullOrEmpty(mail.HTMLBody) && mail.HTMLBody.ToLower().Contains("</body>"))
{
//Get Image + Link
string imagePath = @"D:\\Media\Imagenes\100MSDCF\DSC00632.JPG";
object linkAddress = "http://www.pentavida.cl";
//CONTENT-ID
const string SchemaPR_ATTACH_CONTENT_ID = @"http://schemas.microsoft.com/mapi/proptag/0x3712001E";
string contentID = Guid.NewGuid().ToString();
//Attach image
mail.Attachments.Add(imagePath, Outlook.OlAttachmentType.olByValue, mail.Body.Length, Type.Missing);
mail.Attachments[mail.Attachments.Count].PropertyAccessor.SetProperties(SchemaPR_ATTACH_CONTENT_ID, contentID);
//Create and add banner
string banner = string.Format(@"<br/><a href=""{0}"" ><img src=""cid:{1}"" ></a></body>", linkAddress, contentID);
mail.HTMLBody = mail.HTMLBody.Replace("</body>", banner);
mail.Save();
}
}