Отправить электронное письмо с приложением, используя почтовое приложение клиента - PullRequest
12 голосов
/ 20 января 2011

Мне нужно мое локально установленное приложение толстого клиента (Qt / C ++), чтобы сгенерировать готовое к отправке электронное сообщение на клиентском компьютере:

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

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

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

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

Ответы [ 3 ]

7 голосов
/ 21 января 2011

Вы можете создать файл .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 заставляет пользователя выбирать почтовый клиент, потому что нет общего способа сделать то, о чем вы спрашиваете.

4 голосов
/ 04 февраля 2011

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

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

1 голос
/ 11 марта 2014

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

...