2011-01-20 2 views
12

мне нужно локально установленные, толстостенных клиентского приложение (Qt/C++), чтобы создать готовые к-быть отправлено сообщение электронной почты на компьютере клиента:Отправить по электронной почте с приложением с помощью приложения электронной почты клиента

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

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

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

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

ответ

7

Вы можете создать файл .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

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

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

+2

+1, это решение на окнах. К сожалению, вопрос предполагает, что для этого требуется кросс-платформенное решение ... – Stobor

1

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

Смежные вопросы