Общие вопросы > Разработка приложений

LotusNotes - Delphi - OLE API

(1/2) > >>

dsnsa:
Разработан плагин для IE (как часть информационной системы), написанный на Delphi. Он принимает некий список почтовых адресов и тело письма, которе рассылается по этому списку адресов. В целом можно считать что плагин работает. Но вот когда длина списока адресов становится больше 250 симоволов LN начинает чудить: обрезает его как ему захочется, причем не обязательно лишь с позиции, превышающей гипотетический лимит 250, а, скажем, выкинет 2, 3 и 4 адрес из списка с 8 адресами...
Плагин полноценно отлаживается из-под среды разработки и оттуда видно что строка до установки значения поля MailDoc.SendTo в нормальном состоянии, однако, в Лотус прилетает лишь обрубок. Пытался поиграться с типами AnsiString, WideString, String, Variant - результата не добился...
Помогите кто понимает проблему глубже!


--- Код: ---procedure TForm2.doEmail;
var
  UserName, MailDBName, MailServer: string;
  Session, WorksSpace, uiDoc, MailDB, MailDoc: OLEVariant;
begin
  Session := CreateOleObject('Notes.NotesSession');
  MailServer := Session.GetEnvironmentString('MailServer', True);
  MailDBName := Session.GetEnvironmentString('MailFile', True);
  UserName := Session.UserName;
  MailDB := Session.GetDatabase(MailServer, MailDBName);

  if (not MailDB.isOpen) then
  begin
    MailDB.OpenMail;
  end;

  MailDoc := MailDB.CreateDocument;
  MailDoc.Form := 'Memo';

  MailDoc.SendTo := edTo.Text;

  MailDoc.EnterCopyTo := edCc.Text;

  MailDoc.Subject := edSubject.Text;
  MailDoc.Body := reMessageBody.Text;

  WorksSpace := CreateOleObject('Notes.NotesUIWorkspace');
  WorksSpace.EditDocument(True, MailDoc);

  MailDoc.SaveMessageOnSend := True;
  uiDoc := WorksSpace.CurrentDocument;
  uiDoc.FieldClear('Body');
  uiDoc.GotoField('Body');
  doLoadText();
  uiDoc.Paste;
end;

--- Конец кода ---

cybergeene:
А если попробовать без UI- классов?


--- Код: ---procedure TForm2.doEmail;
var
  UserName, MailDBName, MailServer: string;
  Session, WorksSpace, uiDoc, MailDB, MailDoc: OLEVariant;
begin
  Session := CreateOleObject('Notes.NotesSession');
  MailServer := Session.GetEnvironmentString('MailServer', True);
  MailDBName := Session.GetEnvironmentString('MailFile', True);
  UserName := Session.UserName;
  MailDB := Session.GetDatabase(MailServer, MailDBName);

  if (not MailDB.isOpen) then
  begin
    MailDB.OpenMail;
  end;

  MailDoc := MailDB.CreateDocument;
  MailDoc.Form := 'Memo';

  MailDoc.SendTo := edTo.Text;

  MailDoc.EnterCopyTo := edCc.Text;

  MailDoc.Subject := edSubject.Text;
  MailDoc.Body := reMessageBody.Text;

  MailDoc.SaveMessageOnSend := True;
end;

--- Конец кода ---

dsnsa:
Да, я пробовал, и, к сожалению, они проблему не составляют...  :(

dsnsa:
кто-нибудь может подвердить, что проблема с лимитом длины строки существует?
или я один такой везучий... :))))

ViV:
Сделайте цикл по адресатам и отправляйте письмо каждому. В любом случае при увеличении адресатов какой-нибудь лимит будет достигнут, а ты вы избежите этой проблемы.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии