#c# #email
#c# #Адрес электронной почты
Вопрос:
При использовании пространства имен System.Net.Mail для отправки электронного письма с вложением в любую учетную запись Yahoo вложение загружается с именем «без названия» вместо имени файла.
В интерфейсе Yahoo Mail вложение выглядит с правильным именем, но когда вы загружаете его, имя загрузки становится «без названия» для всех вложений. То же сообщение электронной почты отлично работает с Gmail, Outlook.com , Windows Live Mail и другие клиенты.
Просматривая необработанное сообщение, оно задает тип содержимого с именем, но без атрибута filename. Yahoo работает нормально, если установлен атрибут filename, но библиотека C # не использует это.
Это заголовок, сгенерированный C # для вложений:
Content-Type: application/octet-stream; name=test.pdf
Это заголовок, который работает с Yahoo:
Content-Type: application/octet-stream; name=file2; filename=test.pdf
Кто-нибудь сталкивался с этой проблемой до сих пор? Есть ли обходной путь для отправки почты на C # по умолчанию?
using (var message = new MailMessage("from@domain", "to@yahoo.com.br", "Test with attachment", "Test with attachment"))
{
var attachment = new Attachment(@"c:temptest.pdf"); // Same result using stream instead path to file.
attachment.Name = "test.pdf"; // Same result without this line.
message.Attachments.Add(attachment);
using (var smtp = new SmtpClient("smtp.domain", 587))
{
smtp.Credentials = new NetworkCredential("from@domain", "password");
smtp.Send(message);
}
}
Комментарии:
1. Вы пытались установить свойство Name для вложения? Можете ли вы показать нам свой код?
2. Да, я попытался установить имя файла, отправив его в виде потока и передав путь к файлу. Я добавлю код, чтобы было понятно.
Ответ №1:
Я нашел решение:
attachment.ContentDisposition.FileName = "test.pdf";
Это добавит отсутствующий атрибут filename в необработанное сообщение электронной почты и устранит ограничение Yahoo.
Ответ №2:
Вы пытались явно указать тип содержимого?
var attachment = new Attachment(... , MediaTypeNames.Application.Octet);
Комментарии:
1. Да, я также пытался настроить типы носителей. Загрузка работает нормально (не повреждена). Единственная проблема — это имя файла и только с учетными записями Yahoo.