Общие вопросы > Разработка приложений
LotusNotes - Delphi - OLE API
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:
Сделайте цикл по адресатам и отправляйте письмо каждому. В любом случае при увеличении адресатов какой-нибудь лимит будет достигнут, а ты вы избежите этой проблемы.
Навигация
Перейти к полной версии