【发布时间】:2016-12-30 00:08:27
【问题描述】:
简而言之:当电子邮件正文长度超过 40.960 个字符时,如何使用 Siebel 的 Comm Outbound Email buscomp 发送电子邮件?我可以改用Outbound Communications Manager BS(或另一个),但我也需要创建活动记录。
在 Siebel 7.8 中,您可以通过几种不同的方式发送电子邮件:
按 F9 打开
Send Communications Applet,其中 Send 按钮调用底层 BCComm Outbound Email→EmailSend方法:发送电子邮件并创建一个新的活动记录(S_EVT_ACT和S_EVT_MAIL表)。电子邮件正文没有长度限制。从服务器脚本,您可以使用
Outbound Communications Managerservice methodSendMessage。它也没有长度限制,但它不会在 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);
- 或者您可以通过自己创建 BC 记录并调用(未记录?)
EmailSend方法来复制 F9 行为。问题是您不能将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");
为什么我在Display Email Body 中被限制为 40.960 个字符(这个数字是从哪里来的?),而 F9 小程序没有这个限制?我知道这个领域很特别;对于初学者,Siebel 7.8 doesn't support database columns above 16.383 characters,但此字段的最大长度为 1.024.000(不是 40.960...)。为此,定义了field user property Text Length Override(没有值)。此外,它没有映射到任何列:它是一个计算字段,但没有计算表达式;我猜 BC 的 CSSBCOutMail 班级管理它。但是,无论我是从脚本还是从小程序中使用它,它都应该是相同的。为什么不是,我应该在任何地方更改任何内容以启用它吗?
我的要求是从服务器脚本发送长电子邮件,但我也需要创建活动记录。调用Outbound Communications Manager→SendMessage时是否有任何隐藏参数可以设置,以创建活动记录?或者如果我这样做bc.SetFieldValue("Display Email Body", aVeryLongEmailBody);,有什么方法可以避免错误?
【问题讨论】: