0

CF 8.0.1 でこれを試していますが、失敗しています。次のように、カスタム値をカスタム タグに渡そうとしています。

<cf_call ckmail="#{to='test@test.com',from='test@test.com',subject='Error reported',mailserver='mail.domain.com',username='1234',password='tested'}#">

カスタムタグ call.cfm には、次のものがあります。

<cfparam name="attributes.ckmail" default="">
<cfmail attributecollection = "#attributes.ckmail#">

私が得ているエラーは次のとおりです。

11 行目の 18 列目に無効な CFML 構造が見つかりました。ColdFusion は次のテキストを参照していました: {

CF9 では正常に動作していますが、CF8.0.1 (または以前のバージョン) では上記のメッセージで失敗しています。


2012 年 7 月 18 日のコード更新


ダンのコードを使用してみましたが、別の問題に直面しています。カスタムタグでは、このように使用しています

       <cfset emailSetting = StructNew()>
   <!--- loop our query string values and set them in our structure --->
   <cfloop list="#attributes.ckmail#" index="key" delimiters=",">
     <cfset emailSetting["#listFirst(key,'=')#"] = urlDecode(listLast(key,"="))>
   </cfloop>
   <cfdump var="#emailSetting#"><cfabort>
       <cfmail attributecollection = "#emailSetting#"> 

上記はカスタムタグの設定です。コードから次のように呼び出しました

       <cf_call ckmail="to=i@test.com,from=test@domain.com,subject='Error reported',
    server=mail.domain.com,username=test@domain.com,password=tes@,type=html">

今私が得ているエラーは、「smtp」サーバーが定義されていないということです。

cfadmin に smtp の詳細を追加すると機能します。入力したフィールドの値が無視される可能性がありますが、cfadmin にも smtp 設定が定義されていない場合はエラーが表示されます。

4

3 に答える 3

2

暗黙の構造は、CF8.0.1 で動作するはずです。

もちろん、次のようなコードを使用して、structNew() 関数を使用して構造を構築できます。

<cfset mailArgs             = StructNew() />
<cfset mailArgs.to          = 'test@test.com' />
<cfset mailArgs.from        = 'test@test.com' />
<cfset mailArgs.subject     = 'Error reported' />
<cfset mailArgs.mailserver  = 'mail.domain.com' />
<cfset mailArgs.username    = '1234' />
<cfset mailArgs.password    = 'tested' />

<cf_call ckmail="#mailArgs#"> 

エラーの正確な場所を特定できるように、ColdFusion からの詳細なエラー レポートをここに投稿していただけますか? または、もっと多くのコードを投稿できますか?

于 2012-07-04T10:56:56.077 に答える
0

ckmail属性でstructリテラル構文を使用していますが、これによりCF8とCF9の間で動作が変更されたと思います。昔ながらの方法で構造体を作成してみて、それが機能するかどうかを確認します。

于 2012-07-04T10:36:03.810 に答える
0

うーん....カスタムタグ呼び出しでポンド記号が他の人に奇妙に見えるのだろうか? 構造表記は通常、次のようになります。

<cfset mystruct = {to='test@test.com',from='test@test.com',subject='Error reported',mailserver='mail.domain.com',username='1234',password='tested'}/>

シャープ記号を使用すると、CF は値をマージしようとして「何かを実行」します (実行する場合のように<cfset z = #x+y#/> ... しかし、それらをオフにしておくと、CF はコンストラクター インジケーター (中括弧) を「参照」できます)。

しかし、その場合にカスタム タグがどのように動作するかはわかりません。次のように呼び出してみましたか:

<cf_call 
 ckmail={to='test@test.com',from='test@test.com',subject='Error reported',mailserver='mail.domain.com',username='1234',password='tested'}/>

または、それが失敗した場合-提案されているように-事前に次のように設定します。

<cfset args = {to='test@test.com',from='test@test.com',subject='Error reported',mailserver='mail.domain.com',username='1234',password='tested'}/>

次に呼び出します。

<cf_call ckmail="#args#"/>

それらのいずれかが機能するかどうかを確認しますか?

于 2012-07-04T14:27:55.597 に答える