C# 如何在Outlook 2007 VSTO中嵌入图像
大家好,我正在创建Outlook 2007外接程序。我在我的项目的资源文件夹中有一堆图片,我在资源文件夹中的图片上进行foreach,为每个项目创建按钮,并将按钮背景设置为图片。然后在按钮上单击我想将按钮的图像添加到电子邮件正文中。我在下面有这个方法,但是我不能将图像对象传递给我需要图像完整路径的方法 请告诉我该怎么做C# 如何在Outlook 2007 VSTO中嵌入图像,c#,outlook,vsto,C#,Outlook,Vsto,大家好,我正在创建Outlook 2007外接程序。我在我的项目的资源文件夹中有一堆图片,我在资源文件夹中的图片上进行foreach,为每个项目创建按钮,并将按钮背景设置为图片。然后在按钮上单击我想将按钮的图像添加到电子邮件正文中。我在下面有这个方法,但是我不能将图像对象传递给我需要图像完整路径的方法 请告诉我该怎么做 if (!string.IsNullOrEmpty(mail.HTMLBody) && mail.HTMLBody.ToLower().Contains("<
if (!string.IsNullOrEmpty(mail.HTMLBody) && mail.HTMLBody.ToLower().Contains("</body>"))
{
int mailBodyLength;
if (mail.Body == null)
{
mailBodyLength = 0;
}
else
{
mailBodyLength = mail.Body.Length;
}
//Get Image + Link
Image imagePath = image;
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, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, mailBodyLength, 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();
}
如果(!string.IsNullOrEmpty(mail.HTMLBody)和&mail.HTMLBody.ToLower()包含(“”)
{
int邮件体长度;
if(mail.Body==null)
{
mailBodyLength=0;
}
其他的
{
mailBodyLength=mail.Body.Length;
}
//获取图像+链接
图像路径=图像;
对象链接地址=”http://www.pentavida.cl";
//内容ID
常量字符串SchemaPR\u ATTACH\u CONTENT\u ID=@”http://schemas.microsoft.com/mapi/proptag/0x3712001E";
字符串contentID=Guid.NewGuid().ToString();
//附加图像
mail.Attachments.Add(imagePath,Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue,mailBodyLength,Type.Missing);
mail.Attachments[mail.Attachments.Count].PropertyAccessor.SetProperties(SchemaPR\u attachment\u CONTENT\u ID,contentID);
//创建并添加横幅
string banner=string.Format(@“
”,linkAddress,contentID);
mail.HTMLBody=mail.HTMLBody.Replace(“,横幅);
mail.Save();
}
提前感谢。为什么不将图像保存到临时文件夹中,然后在将其附加到邮件对象后立即将其删除:
using System.Reflection;
using System.IO;
//Attach image
object missing = System.Reflection.Missing.Value;
Image car = OutlookAddIn1.Properties.Resources.Car;
string path = Path.Combine(Path.GetTempPath(), "Car.jpg");
car.Save(path);
if (File.Exists(path))
{
mail.Attachments.Add(path,Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue,missing, missing);
File.Delete(path);
}
约翰尼,我相信这只是一个简单的错误。这是我做的改变
mail.Attachments[mail.Attachments.Count].PropertyAccessor.SetProperties(SchemaPR_ATTACH_CONTENT_ID, contentID);
到
mail.Attachments[mail.Attachments.Count].PropertyAccessor.SetProperty(schemaPrAttachContentId, contentId);