none
Отправка электронной почты через SmtpClient с сохранением письма в папке "Отправленные" RRS feed

  • Вопрос

  • Есть ли возможность сохранять копию отправленного через System.Net.Mail.SmtpClient письма в папке "Отправленные" (или любой другой папке) на почтовом сервере. Т.е. сохранять отправленные письма на сервере таким же образом, как это делают почтовые клиенты типа Thunderbird, Bat, Outlook и др.
    24 декабря 2010 г. 10:27

Ответы

  • Спасибо, около недели назад не смог найти бесплатных библиотек по работе с email, за исключением вот этой:

    http://www.codeproject.com/KB/IP/imaplibrary.aspx.

    А несколько платных не смог купить, поскольку в российских интернет магазинах (типа softkey и softline) их не нашел.

    Поэтому уже решил проблему путем отправки копии письма на второй почтовый ящик. Конечно не так удобно, но задачу решает.

    • Помечено в качестве ответа Abolmasov Dmitry 29 декабря 2010 г. 6:35
    29 декабря 2010 г. 5:17

Все ответы

  • посмотрите Adding Save() functionality to Microsoft.Net.Mail.MailMessage , надеюсь поможет:)
    • Предложено в качестве ответа PashaPashModerator 24 декабря 2010 г. 20:15
    24 декабря 2010 г. 11:00
  • Если я правильно понял, то при помощи рефлексии и расширяющих методов я смогу добавить к классу MailMessage метод сохранения письма в файл.

    В понедельник попробую реализовать этот функционал на работе. Но сразу предвижу одну проблему. Сохранять письмо мне нужно на почтовом сервере о структуре каталогов которого мне ничего неизвестно.

    Я немного поясню задачу. У нас на предприятии работает почтовый сервер. Подключаясь к нему почтовым клиентом, например Outlook, и отправляя письма сам почтовый клиент помещает отправленные письма в папке sent(Отправленные). Любой пользователь, подключившись к тому же почтовому ящику (с которого было отправлено письмо) может при помощи почтового клиента прочитать эти отправленные письма, просто посмотрев содержимое папки "Отправленные".

    Моя же программа, через System.Net.Mail.SmtpClient, подключается к почтовому серверу и автоматически рассылает письма клиентам. Мне бы очень хотелось, чтобы эти письма также были видны всем пользователям, подключающимся к почтовому ящику (с которого было отправлено письмо) через почтовых клиентов типа Thunderbird, Bat, Outlook и др.

    25 декабря 2010 г. 3:22
  • В свойствах папки "Отправленные" почтового клиента я посмотрел свойства папки.

    Ее адрес: imap://ccd_orf%40bor.kamchatka.ru@10.0.0.3/Sent

    Почтовые клиенты каким-то образом умудряются сохранять копию отправленного письма по этому пути. Расширяющий метод Save() из предложенного ответа не сможет сохранить что-либо по этому пути. Поэтому вопрос остается открытым.

    26 декабря 2010 г. 23:36
  • Из названия папки можно предположить, что сохранение идет по протоколу IMAP, а не через SMTP.

    27 декабря 2010 г. 17:08
    Отвечающий
  • В качестве протокола чтения писем в почтовом клиенте выбран IMAP. Если выбрать POP,то в названии директории поменяется только это ключевое слово. Протокол IMAP создан для чтения писем, а в папку sent письмо попадает после отправки. Ладно, я так понял, что в стандартных классах сборок .NET нужный мне механизм просто не реализован. Тут Microsoft дала возможность подзаработать разработчикам платных компонентов.
    27 декабря 2010 г. 23:42
  • SMTP протокол предназначен для отправки писем, а не для сохранения их куда-то. Клиент просто передает писмо для отправки серверу. И уже сервер решает, что с ним делать. В том числе - сохранять ли их в какой-то папке. Если письма, отправленные через Bat/Outlook, сохраняются в какой-то папке, то в нее же попадут и письма от SmtpClient. Ничего дополнительно реализовывать не надо. И создатели платных компонентов встретят новый год голодными :)

    • Предложено в качестве ответа Abolmasov Dmitry 28 декабря 2010 г. 20:06
    28 декабря 2010 г. 12:16
    Модератор
  • По вопросу сохранения.

    Было бы хорошо, если бы ты был прав. Я, правда, был бы очень рад, если бы сервер сам решал эту проблему. И не возникло бы этого топика :)

    Но по факту картина следующая: копии писем, отправленные через Thunderbird сохраняются в папке "отправленные", копии писем, отправленных через SmtpClient нет. Почтовый ящик используется в обоих случаях один и тот же.

    28 декабря 2010 г. 20:46
  • Мда, печальная ситуация.

    Федор, попробуйте воспользоваться бесплатной библеотекой для работы с imap протоколом - ImapX – free for use .NET library. Думаю она может помочь в решении проблемы.

    Если не поможет, то тогда видимо остается смотреть в сторону платных компонентов или изучать протокол и писать свой компонент.


    Для связи [mail]
    28 декабря 2010 г. 22:11
  • Спасибо, около недели назад не смог найти бесплатных библиотек по работе с email, за исключением вот этой:

    http://www.codeproject.com/KB/IP/imaplibrary.aspx.

    А несколько платных не смог купить, поскольку в российских интернет магазинах (типа softkey и softline) их не нашел.

    Поэтому уже решил проблему путем отправки копии письма на второй почтовый ящик. Конечно не так удобно, но задачу решает.

    • Помечено в качестве ответа Abolmasov Dmitry 29 декабря 2010 г. 6:35
    29 декабря 2010 г. 5:17
  • а как Вам такой способ

     

    void SendMessage(MailMessage message, bool storeFile)
     {
      var client = new SmtpClient();
      if (storeFile)
      {
      client.PickupDirectoryLocation = "Output Mail Directory";
      client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
      client.Send(message);
      }
      client.DeliveryMethod = SmtpDeliveryMethod.Network;
      client.Send(message);
     }

     

    • Изменено saturn573 1 февраля 2011 г. 13:26 ошибка в коде
    1 февраля 2011 г. 5:34
  • Это отправка, а нужно сохранение в виде файла.
    9 октября 2014 г. 19:07
  • Отличная альтернатива, однако мне нужно тоже самое только без библиотек =(
    9 октября 2014 г. 19:08