Показать сообщение отдельно
Старый 27.08.2007, 12:44   #11  
.rejector._imported is offline
.rejector._imported
Участник
 
47 / 10 (1) +
Регистрация: 08.04.2004
Пардон, не видел что меня спросили.

Отвечу расширенно, что бы максимально исключить лишние вопросы.

Я сделал так:

- В одной из настроечных таблиц создал BLOB поле, и импотировал туда библиотеку jMail.dll
- создал codeunit, в тригере OnRun написал код, позволяющий импортировать/экспортировать dll

Код:
OnRun()
// при прямом запуске можно вручную сделать импорт или экспорт jMail.dll
MenuResalt := STRMENU('Import jMail.dll,Export jMail.dll', 1);
Company.FIND('-');
CASE MenuResalt OF
  1 : BEGIN
        FileNamejMail := Company."jMail.dll".IMPORT('jMail.dll', TRUE);
        IF FileNamejMail  '' THEN BEGIN
          Company.MODIFY(TRUE);
          MESSAGE('Готово')
        END
        ELSE
          CLEAR(Company."jMail.dll")
      END;
  2 : BEGIN
        Company.CALCFIELDS(Company."jMail.dll");
        IF Company."jMail.dll".HASVALUE THEN
          Company."jMail.dll".EXPORT(FileNamejMail, TRUE)
        ELSE
          MESSAGE('Выгружать нечего, поле пустое... ')
      END;
END;
В этом же кодюните создал функцию NewMessage

Код:
NewMessage(FromName : Text[30];ToName : Text[30];CCName : Text[30];Subject : Text[60];Body : Text[255];AttachFileName : Text[255];ShowMessage    :Boolean) : Boolean
//NewMessage (FromName,ToName,CCName,Subject,Body,AttachFileName)

IF ISCLEAR(MailClient) THEN
  IF NOT CREATE(MailClient) THEN
    IF NOT Install_jMail THEN
      ERROR('Не возможно установить компонент jMail.dll');

IF GUIALLOWED THEN BEGIN
  window.OPEN('#1###################\'+
              'Сервер #2############\'+
              'Юзер   #3############');
  window.UPDATE(1, Text001);
  window.UPDATE(2, SMTPServer);
  window.UPDATE(3, UserName);
END;

CREATE(Mail);
Mail.Silent := TRUE;
Mail.Logging := TRUE;
Mail.Charset := 'windows-1251';
IF UserSetup.GET(USERID) AND (UserSetup."E-mail"  '') THEN
  Mail.From := UserSetup."E-mail"
ELSE
  Mail.From := '';
Mail.FromName := FromName;
Mail.Subject := Subject;
Mail.AddRecipient(ToName);

IF CCName  '' THEN
  Mail.AddRecipientCC(CCName);
Mail.AppendText(Body);
IF AttachFileName  '' THEN
  Mail.AddAttachment(AttachFileName,FALSE);

Mail.MailServerUserName := MailServerUserName;
Mail.MailServerPassWord := Password;
IF NOT Mail.Send(SMTPServer,FALSE) AND GUIALLOWED THEN
  MESSAGE(Mail.ErrorMessage())
ELSE
  CLEAR(Mail);

IF GUIALLOWED THEN BEGIN
  window.CLOSE;
  IF ShowMessage THEN
    MESSAGE('Пользователю %1 отправлено письмо.\Тема письма:"%2"', ToName, Subject)
END;
Переменные следующие:

Код:
UserName    Text        30
window    Dialog        
MailClient    Automation    'JMail 4.0 library'.Attachment    
Mail    Automation    'JMail 4.0 library'.Message    
Filename    Text        30
Company    Record    Company    
MenuResalt    Integer        
FileNamejMail    Text        250
WinPath    Text        250
UserSetup    Record    User Setup
И последняя функция, в этом кодюните производит выгрузку dll на машину пользователя и её регистрацию

Код:
Install_jMail() : Boolean
//Install_jMail
Company.FIND('-');
Company.CALCFIELDS(Company."jMail.dll");
IF Company."jMail.dll".HASVALUE THEN
  BEGIN
    WinPath := FORMAT(ENVIRON('WINDIR')) + '\System32\jMail.dll';
    Company."jMail.dll".EXPORT(WinPath, FALSE);
    IF SHELL(STRSUBSTNO('regsvr32 "%1"',WinPath)) = 0 THEN
      EXIT(TRUE)
  END;
ЗЫ.
Ещё раз спасибо Forward за наводку на dll'ку

Надеюсь кому-нибудь сгодится.