Подтвердить что ты не робот

Отправлять электронную почту с помощью приложения электронной почты клиента

Мне нужно мое локально установленное приложение с толстым клиентом (Qt/С++) для создания готового к отправке сообщения электронной почты на клиентской машине:

  • Это сообщение должно содержать содержимое относительно небольшого (15K - 200K) двоичного файла.
  • Многие из моих пользователей будут отключены в момент создания этого сообщения, поэтому возможно, что электронное письмо должно будет находиться в папке "Исходящие" до более позднего времени.
  • Это приложение будет работать в Windows, Mac OS X и различных дистрибутивах Linux (официальная поддержка Ubuntu/Debian и Fedora), и нет необходимости устанавливать определенные почтовые клиенты.

Я уже пробовал:

  • Открытие ссылки mailto: с помощью QDesktopServices::openUrl() с параметром attach (или attachment). Но эти параметры официально не являются частью протокола, и некоторые клиенты (особенно Outlook) игнорируют их.
  • Кодирование файла с использованием Base64 и добавление его как части параметра body ссылки mailto:. Но длина ссылки mailto усекается некоторыми почтовыми клиентами (опять же, в частности Outlook), поэтому это не сработает.

Google Picasa достигает этого (по крайней мере, в Windows, не проверял другие ОС) при отправке изображений из приложения. Он создает сообщение с вложениями и некоторым предварительно заполненным текстом. Затем вы можете отредактировать сообщение и отправить его в удобное для вас время. Любые идеи, как они это делают?

4b9b3361

Ответ 1

Вы можете создать файл .eml и открыть его, который должен дать вам эффект, который вы хотите, до тех пор, пока есть какой-либо почтовый клиент, зарегистрированный в системе, для обработки файлов с этим расширением. Я уверен, что это не так универсально, как схема mailto:, но если mailto: не работает для вас, я думаю, что это может быть второй лучший вариант попробовать.

От http://www.coolutils.com/Formats/EML

Поскольку файлы EML созданы для соответствия с отраслевым стандартом RFC 822, они могут использоваться с большинством сообщений электронной почты клиентов, серверов и приложений. Помимо Microsoft Outlook Express, Файлы EML можно открыть, используя большинство клиенты электронной почты, такие как Microsoft Outlook, Microsoft Entourage, Mozilla Thunderbird, Apple Mail и IncrediMail.

Боковое примечание
Когда я нажимаю "Электронная почта" в Picasa, я получаю диалог, где я могу выбрать, какое приложение (Thunderbird или Google Mail) я хочу отправить по электронной почте. Это означает, что Picasa знает, какой клиент электронной почты используется для отправки электронной почты, и может использовать собственный метод, специфичный для выбранного почтового клиента, для отправки электронной почты. Это, конечно, только предположение, но может быть, что Picasa позволяет пользователю выбирать почтовый клиент, потому что нет общего способа делать то, о чем вы просите.

Ответ 2

Я не думаю, что вы используете правильный подход; используйте MAPI/С++. Я делал это несколько раз как в Outlook/Thunderbird, используя MAPI/С++. Вы можете выбрать почтовый клиент по умолчанию, запросив реестр; Я думаю, что это все приложения.

Также см. ссылку здесь http://lists.trolltech.com/qt-interest/2006-02/thread00861-0.html

Ответ 3

Некоторое время назад я начал писать небольшую библиотеку для открытия "почтового клиента по умолчанию" независимо от платформы. Это все равно может понадобиться, но вы можете использовать его в качестве базы, если хотите: https://github.com/picaschaf/qt-email