gpt4 book ai didi

salesforce - 为什么由 APEX 可调度类发送的 HTML 电子邮件带有空白正文?

转载 作者:行者123 更新时间:2023-12-03 12:54:36 25 4
gpt4 key购买 nike

我有一个 APEX 类(class),用于每天晚上 7 点发送一封电子邮件:

全局类 ReportBroadcaster 实现 Schedulable {

全局 ReportBroadcaster() {
}

全局无效执行(SchedulableContext sc){
发送();
}

全局无效发送(){
PageReference page = new PageReference('/apex/nameofvfpage');
page.setRedirect(true);
Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();
email.setSubject('示例主题');
email.setHtmlBody(page.getContent().toString());
email.setToAddresses(new String[]{'test@test.com'});
Messaging.sendEmail(new Messaging.SingleEmailMessage[]{email});
}
}

当我通过匿名 APEX 通过 ReportBroadcaster 的实例执行 send() 方法时,它按预期交付。但是,当我安排类(class)时,发送的电子邮件是空白正文。如果我将电子邮件正文切​​换为纯文本,它可以很好地传递(但这对我不起作用)。

我该如何进行这项工作?

更新:

您不能从计划的 APEX 或 @future 方法调用 PageReference 实例上的 getContent() (我不确定为什么会这样,但它就是这样)。我认为解决方案是创建一个我将从@future 方法调用的Web 服务。似乎令人难以置信的hacky,但我不确定我还能做什么。

最后更新:
这是从预定 APEX 发送 HTML 电子邮件的方法:

  • 创建一个实现 Schedulable 接口(interface)的类。
  • 让 execute() 方法调用 @future 方法。
  • 让@future 方法在发送电子邮件的类中调用启用 Web 服务的方法。

  • 虽然这种方法是迂回的,但它确实有效。

    最佳答案

    getContent()计划的 Apex 不支持方法。见本页最后一行:

    http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_scheduler.htm

    关于salesforce - 为什么由 APEX 可调度类发送的 HTML 电子邮件带有空白正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9404751/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com