Вкратце: как я могу отправить электронное письмо с помощью Siebel Comm Outbound Email
buscomp, если длина тела электронного письма превышает 40 960 символов? Вместо этого я могу использовать Outbound Communications Manager
BS (или другой), но мне также нужно создать запись активности.
В Siebel 7.8 вы можете отправлять электронные письма несколькими способами:
Нажатие F9 открывает
Send Communications Applet
, где кнопка Отправить вызывает базовый метод BCComm Outbound Email
EmailSend
: электронное письмо отправляется и создается новая запись активности (таблицыS_EVT_ACT
иS_EVT_MAIL
). Длина тела письма не ограничена.Из серверного сценария можно использовать
Outbound Communications Manager
сервисный методSendMessage
. У него также нет ограничений по длине, но он не создает никаких записей в Siebel BC, он просто отправляет сообщение, не оставляя следов.
var psOut:PropertySet = TheApplication().NewPropertySet();
var psIn:PropertySet = TheApplication().NewPropertySet();
psIn.SetProperty("ProcessMode", "Remote");
psIn.SetProperty("Charset", "iso-8859-1");
psIn.SetProperty("CommProfile", from);
psIn.SetProperty("MsgToList", to);
psIn.SetProperty("MsgSubject", subject);
psIn.SetProperty("MsgHTMLBody", body);
var bs:Service = TheApplication().GetService("Outbound Communications Manager");
bs.InvokeMethod("SendMessage", psIn, psOut);
- Или вы можете воспроизвести поведение F9, самостоятельно создав запись BC и вызвав (недокументированный?) метод
EmailSend
. Проблема в том, что вы не можете установить значениеDisplay Email Body
длиннее 40,960 символов, иначе вы получите ошибкуSBL-DAT-00235
.
var bo:BusObject = TheApplication().GetBusObject("Service Request");
var bc:BusComp = bo.GetBusComp("Comm Outbound Email");
bc.NewRecord(NewAfter);
bc.SetFieldValue("Email Format", "HTML/Plain Text");
bc.SetFieldValue("Email Charset", "iso-8859-1");
bc.SetFieldValue("Email Sender Address", from);
bc.SetFieldValue("Email Sender Name", from);
bc.SetFieldValue("Email To Line", to);
bc.SetFieldValue("Description", subject);
bc.SetFieldValue("Display Email Body", body); // will fail if body.length > 40960
bc.WriteRecord();
bc.InvokeMethod("EmailSend");
Почему я ограничен 40 960 символами (и откуда взялось это число?) в Display Email Body
, а в апплете F9 такого ограничения нет? Я знаю, что это поле особенное; для начала, Siebel 7.8 не поддерживает столбцы базы данных длиной более 16 383 символов, но максимальная длина этого поля составляет 1.024.000 (не 40.960...). Для этого определяется свойство пользователя поля Text Length Override
(без значения ). Кроме того, оно не сопоставлено ни с одним столбцом: это вычисляемое поле, но без вычисляемого выражения; Я предполагаю, что класс CSSBCOutMail
BC справляется с этим. Но тем не менее, это должно быть одинаково, использую ли я его из сценария или из апплета. Почему это не так, я должен что-то изменить где-нибудь, чтобы включить его?
Мое требование состоит в том, чтобы отправлять длинные электронные письма из сценария сервера, но мне также нужно создать запись активности. Есть ли какой-либо скрытый параметр, который я могу установить при вызове Outbound Communications Manager
SendMessage
, чтобы создать запись активности? Или как избежать ошибки, если я сделаю bc.SetFieldValue("Display Email Body", aVeryLongEmailBody);
?