Я хочу встраивать изображения в почту.Я использую веб-службу Exchange для отправки почты.Изображения хранятся в базе данных в формате байтового массива.Даже после встраивания изображений в формате CID я не вижу изображения в почте
Изображения хранятся в базе данных.См. Таблицу ниже:
ImageId ImageName ImagePath Data ContentType
1 SampleImage.jpg SamplePath 0xFFD… image/png
2 SampleImage.jpg SamplePath 0xFFD… image/png
3 SampleImage.jpg SamplePath 0xFFD… image/jpeg
4 SampleImage.jpg SamplePath 0xFFD… image/png
Я использую функции Azure для отправки электронных писем.Мой код для встраивания изображений выглядит следующим образом:
var linkedResources = new List<LinkedResource>();
try
{
HtmlDocument bodyDoc = new HtmlDocument();
bodyDoc.OptionDefaultStreamEncoding = Encoding.UTF8;
bodyDoc.LoadHtml(Body);
var nodes = bodyDoc.DocumentNode.SelectNodes("//img[@src]");
if (nodes != null && nodes.Count > 0)
{
foreach (HtmlNode link in nodes)
{
HtmlAttribute att = link.Attributes["src"];
int id;
if (att.Value.IndexOf("image/get?id=") > -1 && int.TryParse(att.Value.Substring(att.Value.IndexOf("image/get?id=") + "image/get?id=".Length), out id))
{
if (id == 0)
{
HtmlAttribute altAttr = link.Attributes["alt"];
if (altAttr.Value.IndexOf("image/get?id=") > -1 &&
int.TryParse(
altAttr.Value.Substring(altAttr.Value.IndexOf("image/get?id=") + "image/get?id=".Length),
out id))
{
}
}
try
{
var image = ImageRepository.Get(id);
if (image != null)
{
var inlineImage = new LinkedResource(new MemoryStream(image.Data), image.ContentType)
{
ContentId = Guid.NewGuid().ToString()
};
att.Value = string.Format("cid:{0}", inlineImage.ContentId);
linkedResources.Add(inlineImage);
}
}
catch (Exception e)
{
log.Info(e.Message);
}
}
}
var view = AlternateViews.FirstOrDefault();
log.Info("Embedded Images LOG");
if (view == null)
{
log.Info("Embedded Images Info: View IS NULL");
view = AlternateView.CreateAlternateViewFromString(Body, null, "text/html");
}
else
{
log.Info("Embedded Images Info: View IS NOT NULL");
}
foreach (var resource in linkedResources)
{
log.Info("Embedded Images Info: Adding Linked Resources");
view.LinkedResources.Add(resource);
}
AlternateViews.Add(view);
Stream stream = new MemoryStream();
bodyDoc.Save(stream);
stream.Seek(0, SeekOrigin.Begin);
StreamReader sr = new StreamReader(stream);
Body = sr.ReadToEnd();
}
}
catch (Exception e)
{
log.Info(e.Message);
}
Ожидаемый результат: Изображения успешно встраиваются в почту
Фактический результат: Сообщение об ошибке: Невозможно отобразить связанное изображение.Возможно, файл был перемещен, переименован или удален.Убедитесь, что ссылка указывает на правильный файл и местоположение