Электронная почта: как установить имя встроенного изображения в C# / System.Mail?
Я пытаюсь отправить электронное письмо со встроенными изображениями в нем из C#. Когда я получаю это письмо в Gmail, встроенные изображения не имеют собственных имен - вместо этого они отображаются как "noname" - см. Скриншот ниже
Вот как я встраиваю изображения в электронную почту:
foreach (var objimage in images)
{
var ms = new MemoryStream(objimage.ImageBytes);
var lr = new LinkedResource(ms, MediaTypeNames.Image.Jpeg);
lr.ContentId = "Photo_" + (++i).ToString();
lstImages.Add(lr);
body += string.Format("<img src='cid:{0}' alt='{1}' name='{1}' title='{1}' />", lr.ContentId, objimage.ImageName);
}
глядя на этот вопрос: Как остановить встроенные изображения в электронной почте, которые GMail отображает в виде вложений? - и сравнивая тело моего письма, похоже, мне нужно установить поле Content-Type, чтобы
Тип контента: изображение / JPEG; name = "my image name.png""
тогда как в настоящее время мое письмо выглядит так:
----boundary_3_d581d04c-d294-4dc5-971e-785a678fbd12
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <Photo_1>
Любая идея, как я могу сделать это с C# и System.Mail?
Благодарю.
3 ответа
Ну, ответ оказывается очень простым:
lr.ContentType.Name = "my image name.jpg";
Если изображение не поступает в IE, используйте приведенный ниже linkResource = new LinkedResource(src, MediaTypeNames.Image.Jpeg); //abbukmailer.com
Для вложений
Content-Disposition: attachment; fileName=<Your file name>
Что касается RFC
Для связанного ресурса должно быть что-то похожее