Как можно отправить почту с помощью IMAP?

Это - ограничение XmlSerializer. Обратите внимание, что BinaryFormatter и DataContractSerializer не делают , требуют этого - они могут создать неинициализированный объект из эфира и инициализировать его во время десериализации.

, Так как Вы используете xml, Вы могли бы рассмотреть использование DataContractSerializer и маркировка Вашего класса с [DataContract] / [DataMember], но отмечать, что это изменяет схему (например, нет никакого эквивалента [XmlAttribute] - все становится элементами).

Обновление: если Вы действительно хотите знать, BinaryFormatter и др. использование FormatterServices.GetUninitializedObject() для создания объекта, не вызывая конструктора. Вероятно, опасный; я не рекомендую использовать его слишком часто;-p Видят также комментарии по MSDN:

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

у меня есть мой собственный механизм сериализации, но я не намереваюсь заставить его использовать FormatterServices; мне вполне нравится знать, что конструктор ( любой конструктор) на самом деле выполнился.

24
задан Ignacio Lago 1 February 2019 в 10:52
поделиться

3 ответа

IMAP - это протокол почтового ящика. Он (изначально) не поддерживает отправку почты, а только доступ к ней. Для отправки почты вы должны использовать SMTP. Возможно, существует расширение IMAP для отправки почты, и возможно, что Google Mail поддерживает это расширение, но я сомневаюсь в этом. Следовательно, если вы хотите отправить электронное письмо с вложениями, у вас действительно должно быть полное содержание сообщения, доступное для отправки.

41
ответ дан 28 November 2019 в 22:45
поделиться

IMAP был разработан для получения сообщений электронной почты, а не для их отправки. Нет команды IMAP для отправки электронной почты AFAIK. Однако существует по крайней мере один сервер IMAP, который поддерживает специальную папку «Исходящие». Когда вы помещаете сообщение в эту папку, оно будет отправлено автоматически.

Проверьте документацию Courier-IMAP по отправке почты через соединение IMAP . Обратите внимание, что это нестандартный метод, и я не знаю ни одного другого сервера, который его поддерживает.

Там RFC 4468 , который расширяет SMTP, чтобы он мог получать содержимое почты с сервера IMAP, но я не знаю ни одной работающей и широко используемой реализации.

Говоря о gmail: использование SMTP, вероятно, является самым безопасным способом.

13
ответ дан 28 November 2019 в 22:45
поделиться

Отправка электронной почты - это особенность некоторых серверов imap. Ничего подобного в протоколе imap. Вы просто копируете свою электронную почту в специальный каталог imap на сервере, и он отправляет их. Я сомневаюсь, что Gmail поддерживает это.

1
ответ дан 28 November 2019 в 22:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: