Как отправить изображение base64 во вложении электронной почты по ссылке base64? - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть base64 URL-адрес изображения, и я хочу отправить это изображение как вложение электронной почты, но оно не работает. Ошибка выбрасывания PathTooLongException

Мой код:

   System.Net.Mail.Attachment attachment = new System.Net.Mail.Attachment(Base64urlpath);
   attachment.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
   myMail.Attachments.Add(attachment);

Пожалуйста, ответьтеменя в system.web.Mail.

Спасибо,

1 Ответ

1 голос
/ 07 ноября 2019

Используемый вами конструктор не принимает ввод base64, но ему нужен путь к файлу:

public Attachment (string fileName);

Параметры

fileName String

Строка, содержащая путь к файлу, который необходимо использовать для создания этого вложения.

(цитируется по документации ). И поскольку ваше закодированное изображение длиннее 260 символов, вы получаете исключение, что путь слишком длинный.

Похоже, что один из конструкторов, принимающих Stream, может быть тем, что вы ищете.

Одна из возможностей преобразовать ваше кодированное в base64 изображение в поток - создать из него MemoryStream:

var imageBytes = Convert.FromBase64String(Base64urlpath);
using var stream = new MemoryStream(imageBytes);
var attachment = new System.Net.Mail.Attachment(stream, null); // you may want to provide a name here
...