在 cfc 中扩展邮件对象

Extending mail object in a cfc

我在 cfscript 中使用了 mail() 对象。我想扩展该对象,以便覆盖 setTo() 方法。这是我写的cfc代码。

component extends="com.adobe.coldfusion.mail"
{
  public void function setTo(String recipients) {
    machineName = createObject("java", "java.net.InetAddress").localhost.getCanonicalHostName();

    if (FindNoCase("devcomputer", machinename) == 0) 
    {
      super.setTo(arguments.recipients);
    }
    else
    {
      super.setTo(this.getFrom());
    }       
  } 
}

然而,当它运行时,我收到一条消息,指出在调用 super.setTo() 的行中不存在 setTo() 方法。进一步挖掘,我查看了超级对象,它继承自 java.lang.Class,而不是 com.adobe.coldfusion.email。

扩展 ColdFusion 的邮件对象以便覆盖 setTo() 方法的正确方法是什么?

com.adobe.coldfusion.mail中的getters/setters其实不是函数,而是访问器。访问器由 ColdFusion 基于组件中的属性自动生成。 属性是继承的,访问器不是!

邮件组件中的访问器只做 set/get 属性 的值。因此 super.setTo(arguments.recipients); 等价于 variables.to = arguments.recipients;this.getTo() 等价于 variables.to 等等

注意:将 accessors="true"extends="com.adobe.coldfusion.mail" 的组件一起使用也不适用于继承的属性。