2012-06-12 6 views
0

Я использую:Отправка электронной почты с подписью

 ShellExecute(Self.Handle, 
      nil, PCHAR(format('mailto:%s ?Subject=Assunto: &Body=',[_lEmails ])), 
      nil, 
      nil, 
      SW_NORMAL); 

отправить электронную почту. Нет Текст тела, так что пользователи, у которых есть автоматические подписи в своих письмах, получают эти письма автоматически.

Теперь я хочу, чтобы пользователи также вставляли текст, но если они делают текст, там есть подпись без подписи. Есть ли способ «заставить» это.

Благодаря

+2

Такая функциональность полностью зависит от клиента электронной почты используется, и они могут вести себя совершенно отличается от друг друга. Насколько мне известно, нет стандартов, кроме некоторых «де-факто» стандартов. –

+3

'MAPI', вероятно, лучший способ отправить электронную почту с использованием клиента по умолчанию. Это позволяет лучше контролировать содержимое. JCL JEDI имеет 'JclMapi.pas', который представляет собой набор простых оболочек вокруг функциональности. См. [Этот ответ] (http://stackoverflow.com/a/7555895/62576) для получения дополнительной информации; сам вопрос касается электронной почты Lotus Notes, но связанный ответ относится к 'JclMAPI' и к паре его функциональных оболочек. –

+0

Звучит для меня как начало ответа, @ Ken.Вопрос задает вопрос о том, как создать электронную почту, чтобы включить подпись с основным текстом, но не имеет необоснованного требования придерживаться плохо определенной методики «mailto», поэтому ответ «Использовать MAPI» хорош. –

ответ

4

Вы можете использовать MAPI вместо (Messaging Applications Programming Interface), что дает вам гораздо больший контроль над электронной почтой, и позволяет такие вещи, как вложения. Вы также можете выбрать, показывать ли пользовательское почтовое клиентское окно «создать» или добавить непосредственно в папку «Исходящие». (Исходящие функции обычно ограничены сейчас из-за изменений в безопасности Windows, особенно в том, что касается MS Outlook).

Самый быстрый и простой способ - использовать что-то вроде JEDI Code LibraryJCLEMail. Это обертка SimpleMAPI, что делает его очень легким (код был взят из старого приложения, и был основан на выборку из демо JCL):

EMail := TJclEMail.Create; 
try 
    EMail.Recipients.Add(AnsiString(EMailAddress), AnsiString(EMailName)); 
    EMail.Subject := AnsiString(Subject); 
    EMail.Body := AnsiString(Body); 
    EMail.HtmlBody := False; // True if it's HTML email 

    // Send attachment if wanted 
    EMail.Attachments.Add(AnsiString(FileName)); 
    EMail.Send(True); // True to show default email, false to add to outbox 
finally 
    EMail.Free; 
end; 

Недостаток SimpleMAPI является то, что он может быть коротким -term (хотя он все еще работает в Windows 7 64-bit и более ранних версиях, я не могу говорить для Windows 8). Согласно MSDN,

[Использование Simple MAPI не рекомендуется. Он может быть изменен или недоступен в последующих версиях Windows.]

Недостаток MAPI является то, что он опирается на MAPI клиента устанавливаются. К счастью, почти любое программное обеспечение, поддерживающее mailto, должно поддерживать MAPI; Например, Outlook делает это, и Mozilla Thunderbird.

2

При обнаружении сигнатуры по умолчанию (если это была суть вопроса, если не жалко, я неправильно понял), то появляется, что вам может быть не повезло (поскольку я пытался это сделать).

Нижеследующая статья MS, кажется, говорит «нет». Похоже, что версии Outlook до 2010 года не будут поддерживать дефолтные подписи электронной почты при создании электронной почты через MAPI. Похоже, что это не дает большой причины и советует вам просто использовать опцию «вставить подпись» в диалоговом окне электронной почты (что для меня не является реальной помощью, когда вы можете захотеть ее по умолчанию и, возможно, для электронной почты просто «идти» без вмешательства пользователя).

http://support.microsoft.com/kb/2544665

+1

Помогите написать резюме статьи MS? Почему он говорит «нет»? – nalply

+0

Не уверен, что могу добавить многое помимо того, что говорится в статье, но, похоже, подразумевает, что версии Outlook до 2010 года не будут поддерживать дефолтные подписи электронной почты при создании электронной почты через MAPI. Похоже, что он не предлагает большую часть причин и советует вам просто использовать опцию «вставить подпись» в диалоговом окне электронной почты (что для меня не является реальной помощью, когда вы можете захотеть ее по умолчанию и, возможно, для электронной почты просто «пойти» «без вмешательства пользователя». – DrHazy

+0

Вы можете отредактировать свой собственный ответ. Я сделал это для вас сейчас, но в будущем, если вы дадите хорошие ответы и резюме, вы получите больше бонусов. – nalply

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