Email 如何使用Siebel服务器脚本发送长电子邮件?

Email 如何使用Siebel服务器脚本发送长电子邮件?,email,siebel,Email,Siebel,简言之:当电子邮件正文超过40.960个字符时,如何使用Siebel的通信出站电子邮件buscomp发送电子邮件?我可以使用出站通信管理器BS(或另一个),但我也需要创建活动记录 在Siebel 7.8中,您可以通过几种不同的方式发送电子邮件: 按F9打开发送通信小程序,其中发送按钮调用基础BC通信出站电子邮件→ EmailSend方法:发送电子邮件并创建新的活动记录(S_EVT_ACT和S_EVT_MAIL表)。电子邮件正文没有长度限制 从服务器脚本中,可以使用。它也没有长度限制,但是它不会

简言之:当电子邮件正文超过40.960个字符时,如何使用Siebel的
通信出站电子邮件
buscomp发送电子邮件?我可以使用
出站通信管理器
BS(或另一个),但我也需要创建活动记录


在Siebel 7.8中,您可以通过几种不同的方式发送电子邮件:

  • 按F9打开
    发送通信小程序
    ,其中发送按钮调用基础BC
    通信出站电子邮件
    EmailSend
    方法:发送电子邮件并创建新的活动记录(
    S_EVT_ACT
    S_EVT_MAIL
    表)。电子邮件正文没有长度限制

  • 从服务器脚本中,可以使用。它也没有长度限制,但是它不会在Siebel BCs中创建任何记录,它只发送消息而不留下任何痕迹

  • var psOut:PropertySet=TheApplication().NewPropertySet();
    var psIn:PropertySet=TheApplication().NewPropertySet();
    psIn.SetProperty(“处理模式”、“远程”);
    psIn.SetProperty(“字符集”、“iso-8859-1”);
    psIn.SetProperty(“CommProfile”,来源于);
    psIn.SetProperty(“MsgToList”,至);
    psIn.SetProperty(“MsgSubject”,主体);
    psIn.SetProperty(“MsgHTMLBody”,body);
    var bs:Service=TheApplication().GetService(“出站通信管理器”);
    bs.InvokeMethod(“发送消息”,psIn,psOut);
    
  • 或者您可以通过自己创建BC记录并调用(未记录?
    EmailSend
    方法来复制F9行为。问题是无法设置长度超过40.960个字符的
    显示电子邮件正文
    值,否则会出现
    SBL-DAT-00235
    错误
  • var-bo:BusObject=TheApplication().GetBusObject(“服务请求”);
    var bc:BusComp=bo.GetBusComp(“通信出站电子邮件”);
    不列颠哥伦比亚省新记录(NewAfter);
    SetFieldValue(“电子邮件格式”、“HTML/纯文本”);
    bc.SetFieldValue(“电子邮件字符集”、“iso-8859-1”);
    bc.SetFieldValue(“电子邮件发件人地址”,发件人);
    bc.SetFieldValue(“电子邮件发件人名称”,发件人);
    bc.SetFieldValue(“发送至行的电子邮件”,发送至);
    bc.SetFieldValue(“描述”,主题);
    bc.SetFieldValue(“显示电子邮件正文”,正文);//如果body.length>40960,则将失败
    bc.WriteRecord();
    bc.调用方法(“电子邮件发送”);
    
    为什么我在
    显示电子邮件正文
    中被限制为40.960个字符(这个数字来自哪里?),而F9小程序没有这个限制?我知道这个领域很特别;首先,该字段的最大长度为1.024.000(而不是40.960…)。为此,定义了(无值)。此外,它没有映射到任何列:它是一个计算字段,但没有计算表达式;我猜BC的
    CSSBCOutMail
    类管理它。但是,无论我是从脚本还是从applet使用它,都应该是一样的。为什么不是,我应该在任何地方更改任何东西来启用它

    我的要求是从服务器脚本发送长电子邮件,但我也需要创建活动记录。在调用
    出站通信管理器时,是否可以设置任何隐藏参数→ <代码>发送消息
    ,以便创建活动记录?或者,如果我使用
    bc.SetFieldValue(“显示电子邮件正文”,aVeryLongEmailBody),则可以使用任何方法避免错误

    我在Oracle支持网站上找到,它回答了一个类似的问题:

    客户正在使用Outbound Communications Manager业务服务方法SendMessage从工作流发送电子邮件,并希望保留活动记录或查看使用此方法发送的电子邮件

    他们提供的解决方法与我们使用的方法相同:使用
    Comm出站电子邮件创建活动记录。但是,它们使用
    入站电子邮件数据库操作
    业务服务,而不是直接使用一个新记录和一组setfieldvalue进行操作:

    var psOut:PropertySet=TheApplication().NewPropertySet();
    var psIn:PropertySet=TheApplication().NewPropertySet();
    psIn.SetProperty(“BusObj”,“邮件代理活动”);
    psIn.SetProperty(“总线通信”、“通信出站电子邮件”);
    psIn.SetProperty(“字段:描述”,主题);
    psIn.SetProperty(“字段:显示电子邮件正文”,正文);
    psIn.SetProperty(“字段:电子邮件发件人地址”,fromAddress);
    psIn.SetProperty(“字段:电子邮件发件人名称”,fromProfile);
    psIn.SetProperty(“字段:电子邮件至行”,至地址);
    var bs:Service=TheApplication().GetService(“入站电子邮件数据库操作”);
    bs.调用方法(“插入记录”,psIn,psOut);
    var error=psOut.GetProperty(“ErrorMessage”);//”“如果一切顺利的话
    var actId=psOut.GetProperty(“ID”);
    
    这样做可以避免奇怪的40960个字符限制

    如果有人需要它,显然在BS定义中还有一个
    UpdateRecord
    方法。参数类似:
    BusObj
    BusComp
    Id
    (要更新的记录的行Id),以及要更改的每个字段的
    字段:字段的名称