У меня есть приложение C #, которое отправляет электронные таблицы Excel через сервер Exchange 2007 с использованием SMTP. Они подходят для пользователей Outlook, но для пользователей Thunderbird и Blackberry вложения были переименованы в «Часть 1.2».
Я нашел эту статью, в которой описывается проблема, но, похоже, она не дает мне решения. У меня нет контроля над сервером Exchange, поэтому я не могу вносить там изменения. Могу ли я что-нибудь сделать на конце C #? Я пробовал использовать короткие имена файлов и кодировку HTML для тела, но ничего не изменилось.
Мой код отправки почты такой:
public static void SendMail(string recipient, string subject, string body, string attachmentFilename)
{
SmtpClient smtpClient = new SmtpClient();
NetworkCredential basicCredential = new NetworkCredential(MailConst.Username, MailConst.Password);
MailMessage message = new MailMessage();
MailAddress fromAddress = new MailAddress(MailConst.Username);
// setup up the host, increase the timeout to 5 minutes
smtpClient.Host = MailConst.SmtpServer;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = basicCredential;
smtpClient.Timeout = (60 * 5 * 1000);
message.From = fromAddress;
message.Subject = subject;
message.IsBodyHtml = false;
message.Body = body;
message.To.Add(recipient);
if (attachmentFilename != null)
message.Attachments.Add(new Attachment(attachmentFilename));
smtpClient.Send(message);
}
Спасибо за любую помощь.
c#
email
smtp
attachment
Джон
источник
источник
Attachment.Name
свойство?Name
Отображается имя вложенного когда электронная почта с приложением принимается. Так что вы можете попробовать любое значение.Ответы:
Простой код для отправки электронного письма с вложением.
источник: http://www.coding-issues.com/2012/11/sending-email-with-attachments-from-c.html
источник
using(SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com")) { //code goes here using(MailMessage mail = new MailMessage()){ //code goes here } }
Явное заполнение полей ContentDisposition сделало свое дело.
Кстати , в случае с Gmail у вас могут быть некоторые исключения в отношении безопасности ssl или даже порта!
источник
FileInfo
объект , чтобы получитьCreationTime
,LastWriteTime
иLastAccessTime
свойства? Вы всеLength
равно создаете его, чтобы получить собственность.Вот простой код отправки почты с вложением
Подробнее Отправка писем с вложением на C #
источник
Завершение решения Ranadheer, используя Server.MapPath для поиска файла
источник
Server.MapPath
взялся и когда его использовать?источник
Я сделал для этого короткий код и хочу поделиться им с вами.
Вот основной код:
источник
Попробуй это:
источник
Я попробовал код, предоставленный Ранадиром Редди (см. Выше), и он отлично сработал. Если вы используете корпоративный компьютер с ограниченным сервером, вам может потребоваться изменить порт SMTP на 25 и оставить пустые имя пользователя и пароль, так как они будут автоматически заполнены вашим администратором.
Первоначально я пытался использовать EASendMail из диспетчера пакетов nugent, только чтобы понять, что это платная версия с 30-дневной пробной версией. Не тратьте на это время, если не планируете покупать его. Я заметил, что при использовании EASendMail программа работала намного быстрее, но для меня бесплатная игра важнее скорости.
Только мои 2 цента стоят.
источник
Используйте этот метод в своей почтовой службе, он может прикреплять любое тело электронной почты и вложения к Microsoft Outlook.
используя Outlook = Microsoft.Office.Interop.Outlook; // Ссылка на Microsoft.Office.Interop.Outlook с локального компьютера или nuget, если вы будете использовать агент сборки позже
источник