cfmail

説明

SMTP サーバーを使用して、オプションでクエリー出力を含む電子メールメッセージを送信します。

シンタックス

<cfmail 
    from = "e-mail address" 
    to = "comma-delimited list" 
    bcc = "comma-delimited list" 
    cc = "comma-delimited list" 
    charset = "character encoding" 
    debug = "yes|no" 
    failto = "e-mail address" 
    group = "query column" 
    groupcasesensitive = "yes|no" 
    mailerid = "header id" 
    maxrows = "integer" 
    mimeattach = "path" 
    password = "string" 
    port = "integer" 
    priority = "integer or string priority level" 
    query = "query name" 
    remove = "yes|no" 
    replyto = "e-mail address" 
    server = "SMTP server address" 
    spoolenable = "yes|no" 
    startrow = "query row number" 
    subject = "string" 
    timeout = "number of seconds" 
    type = "mime type" 
    username = "SMTP user ID" 
    useSSL = "yes|no" 
    useTLS = "yes|no" 
    wraptext = "column number" 
    sign = "true|false" 
    keystore = "location of keystore" 
    keystorepassword = "password of keystore" 
    keyalias = "alias of key" 
    keypassword = "password for private key"> 
 
(Optional) Mail message body and/or cfmailparam tags 
 
</cfmail>
注意: このタグの属性は attributeCollection 属性で指定でき、その値は構造体になります。attributeCollection 属性で構造体の名前を指定し、タグの属性名を構造体のキーとして使用します。

関連項目

cfmailparamcfmailpartcfpopcfftpcfhttpcfldapWrap、『ColdFusion アプリケーションの開発』のSending and Receiving E-MailUsing ColdFusion with mail servers

履歴

ColdFusion 8.0.1:Remove 属性が追加されました。

ColdFusion 8: priorityuseSSL、および useTLS 属性が追加されました。

ColdFusion MX 7:

  • cfmail タグの本文に MIME エンコードされたメッセージ全体を埋め込んでマルチパートメールを送信することができなくなりました。代わりに cfmailpart タグを使用してください。

  • cfmail タグでは等幅フォントがプロポーショナルフォントと同様にレンダリングされます。この動作変更は ColdFusion 5 からのものです。ColdFusion MX 7 では UTF-8 が使用され、これがメールヘッダに埋め込まれて送信されます (Content-Type: text/plain; charset=UTF-8)。ColdFusion 5 では ISO-8859-1 (Latin 1) が使用されます。この動作を抑制するには、charset="ISO-8859-1" 属性を追加して ColdFusion 5 のデフォルトのエンコードに戻します。また、ColdFusion Administrator の [メール] ページでエンコードを変更することもできます。

ColdFusion MX 6.1:

  • charsetfailtoreplytousernamepassword、および wraptext の各属性が新たに追加されました。

  • server 属性で複数のメールサーバーを指定できるようになりました。

  • ColdFusion Administrator の [メール設定] ページにいくつかの設定オプションが追加されました。

ColdFusion MX: SpoolEnable 属性が追加されました。

ColdFusion 9: メールに電子署名を追加できるようになりました。新規に追加された関連属性は、signkeystorekeystorepasswordkeyaliaskeypassword、および remove です。

属性

属性

必須 / オプション

デフォルト

説明

bcc

オプション

メッセージのコピー先のアドレスです。メッセージのヘッダにはリストされません。複数のアドレスを指定するには、各アドレスの間をカンマで区切ります。

cc

オプション

メッセージのコピー先のアドレスです。複数のアドレスを指定するには、各アドレスの間をカンマで区切ります。

charset

オプション

ColdFusion Administrator の [メール] ページで選択した文字エンコード。

utf-8

ヘッダを含むメールメッセージの文字エンコードです。一般的に使用される値を次に示します。

  • utf-8

  • iso-8859-1

  • windows-1252

  • us-ascii

  • shift_jis

  • iso-2022-jp

  • euc-jp

  • euc-kr

  • big5

  • hz-gb-2312

  • euc-cn

  • utf-16

文字エンコードの詳細については、www.w3.org/International/O-charset.html を参照してください。

debug

オプション

no

  • yes: デバッグ出力を標準出力に送信します。デフォルトでは、コンソールウィンドウを使用できない場合、ColdFusion は出力をサーバー設定内の <ColdFusion のルートディレクトリ>¥runtime¥logs¥coldfusion-out.log に送信します。J2EE 設定と JRun を使用する場合、デフォルトの場所は <JRun のホーム>/logs/<サーバー名>-out.log です。注意 : このオプションを yes に設定した場合は、すべてのメッセージ内容を含む詳細なデバッグ情報がログに書き込まれるため、大容量のログが短期間で生成される可能性があります。

  • no: デバッグ出力を生成しません。

failto

オプション

メールシステムから配達失敗の通知が送信されるアドレスです。メールエンベロープの逆順パスの値を設定します。

from

必須

電子メールメッセージの送信者の名前です。

  • スタティックな文字列 (例 : "support@mex.com")。

  • 変数 (例 : "#GetUser.EMailAddress#")。

この属性は、有効なインターネットアドレスでなくてもかまいません。空白を含まない任意のテキスト文字列を使用できます。

to

必須

メッセージ受信者の電子メールアドレスです。

  • スタティックなアドレス (例 : "support@.com")。

  • アドレスが含まれている変数 (例 : "#Form.Email#")。

  • アドレスが含まれているクエリー列の名前 (例 : "#EMail#")。返される行ごとに電子メールメッセージが送信されます。

複数のアドレスを指定するには、各アドレスの間をカンマで区切ります。

subject

必須

メッセージの表題です。ダイナミックに作成することができます。たとえば、顧客に最新情報を通知するメッセージを送信するには、"注文番号 #Order_ID# のステータス" などを指定します。

group

オプション

CurrentRow

レコードのセットをグループ化して、1 つのメッセージとして送信する場合に使用するクエリー列です。たとえば、顧客に 1 セットの請求書を送信する場合、"Customer_ID" でグループ化します。大文字と小文字は区別されます。指定したフィールドでデータをソートする場合、隣り合う重複データは削除されます。

groupcasesensitive

オプション

No

ブール値です。group 属性を使用するときに、大文字と小文字を区別するかどうかを指定します。大文字と小文字の区別があるレコードをグループ化する場合は、この属性を Yes に設定します。

keyalias

オプション

 

証明書と秘密キーをキーストアに保存するために使用するキーのエイリアスです。指定しない場合は、キーストアの最初のエントリがエイリアスとして使用されます。

keypassword

オプション

 

秘密キー用のパスワードです。指定しない場合は、keystorepassword が使用されます。

keystore

オプション

 

キーストアファイルの場所です (C:¥OpenSSL¥bin¥keystore.jks など)。

keystorepassword

オプション

 

キーストア用のパスワードです。ColdFusion 設定ファイルに保存されます。

mailerid

オプション

ColdFusion アプリケーションサーバー

X-Mailer SMTP ヘッダに渡されるメーラー ID です。この ID によって、メーラーのアプリケーションが識別されます。

maxrows

オプション

クエリーをループするときに送信するメッセージの最大数です。

mimeattach

オプション

メッセージに添付するディスク上またはメモリ内のファイルのパスです。添付ファイルは MIME 形式でエンコードされます。ファイルの MIME タイプは ColdFusion によって判断されます。MIME タイプを指定して添付ファイルを送信するには、cfmailparam タグを使用します。

password

オプション

認証を要求する SMTP サーバーに送信するパスワードです。username 属性が必要です。

port

オプション

SMTP サーバーがリクエストをリスンする TCP/IP ポートです (通常は 25)。ここで設定する値は、Administrator で設定する値よりも優先されます。

priority

オプション

3

メッセージの優先度レベルです。次のいずれかの値を指定します。

  • 1 ~ 5 の範囲の整数。1 が最も高い優先度を表します。

  • 次のいずれかの文字列。これらの文字列は数値に対応します。highest または urgenthighnormallowlowest または non-urgent

query

オプション

メッセージのデータを取り出す cfquery の名前です。複数のメッセージを送信する場合や、メッセージ内でクエリー結果を送信する場合は、この属性を使用します。

remove

オプション

no

yes の場合、メールが正常に送信された後に添付ファイル (ある場合) が削除されます。

replyto

オプション

受信者が返信するときに宛先として使用するアドレスです。

server

オプション

メッセージの送信に使用する SMTP サーバーアドレス、または (エンタープライズ版のみ) サーバーアドレスのカンマ区切りのリストです。ここか ColdFusion Administrator で、少なくとも 1 つのサーバーを指定する必要があります。ここで設定する値は、Administrator で設定する値よりも優先されます。ポートの指定を含む値は、port 属性で設定する値よりも優先されます。詳細については、「使用方法」を参照してください。

sign

   

メールに電子署名を追加します。true に設定されている場合、送信するすべてのメッセージに電子署名が追加されます。

spoolenable

オプション

メールをスプールするか、常にメールを直ちに送信するかを指定します。ColdFusion Administrator の [配達されるメールメッセージをスプール] で設定する値よりも優先されます。

  • yes: 送信オペレーションが終了するまで、メッセージのコピーを保存します。ページでこのオプションを使用すると、No オプションを使用するページよりも処理が遅くなることがあります。

  • no: 送信オペレーションが終了するまでコピーを保管せずに、メッセージを送信キューに挿入します。このオプションを No に設定したときに配達エラーが発生すると、アプリケーション例外が発生し、mail.log ファイルにエラーのログが記録されます。

startrow

オプション

1

処理を開始するクエリー内の行です。

timeout

オプション

SMTP サーバーへの接続がタイムアウトになるまで待機する秒数です。ここで設定する値は、Administrator で設定する値よりも優先されます。

type

オプション

text/plain

メッセージの MIME タイプです。有効な MIME メディアタイプまたは次のいずれかの値を指定できます。

  • text: text/plain タイプを指定します。

  • plain: text/plain タイプを指定します。

  • html: text/html タイプを指定します。

登録されているすべての MIME メディアタイプのリストについては、www.iana.org/assignments/media-types/ を参照してください。

username

オプション

認証を要求する SMTP サーバーに送信するユーザー名です。password 属性が必要です。

useSSL

オプション

Secure Sockets Layer を使用するかどうかを指定します。

useTLS

オプション

Transport Level Security を使用するかどうかを指定します。

wraptext

オプション

テキストをラップしない

メールテキストの最大行を文字数で指定します。指定した文字数よりも行が長い場合は、指定した位置の直前の空白文字 (タブやスペースなど) が改行に置き換わります。行に空白文字がない場合は、指定した位置に改行が挿入されます。この属性の一般的な値は 72 です。

使用方法

指定したアドレスにメールメッセージを送信します。メールメッセージには、添付ファイルを含めることができます。タグ本文に CFML コードを入れて、メール出力を生成できます。cfmailparam タグと cfmailpart タグは、cfmail タグ本文内でのみ使用できます。

メールメッセージは、シングルまたはマルチパートにできます。マルチパートのメールメッセージを送信する場合は、メッセージの内容をすべて cfmailpart タグ内に入れる必要があります。cfmailpart タグ内にないマルチパートのメッセージテキストは無視されます。

注意: cfmail タグは、メールをディスクにスプールするときに添付ファイルのコピーを作成しません。スプール機能を有効にした添付ファイルのメッセージを送信するために cfmail タグを使用し、その添付ファイルを削除するために cffile タグを使用する場合、ファイルが削除された後でメール処理が実行される可能性があるため、メールが送信されないことがあります。この場合は、メールログに FileNotFound 例外が記録され、電子メールは送信されません。属性で SpoolEnable="No" を設定するか、ColdFusion Administrator でスプール機能を無効にすると、この問題を防ぐことができます。スプール機能を無効にすると、電子メールは直ちに配達されるようになります。

type="text" を設定すると、送信するメッセージ内の空白文字が圧縮される場合があります。この問題を解決するには、ColdFusion Administrator で [サーバーの設定]-[設定] に移動し、[空白抑制の有効化] オプションを選択解除します。

メールアドレスの指定

メールアドレスは、次のどの形式でも指定できます。

形式

user@server

rsmith@company.com

<user@server>

<rsmith@company.com>

表示名 <user@server>

Rob Smith <rsmith@company.com>

"表示名" <user@server>

"Rob Smith" <rsmith@company.com>

user@server (表示名)

rsmith@company.com (Rob Smith)

メールサーバーの指定

server 属性では、複数のメールサーバーを指定できます。

注意: ColdFusion スタンダード版で複数のメールサーバーを指定した場合、cfmail タグではその中の最初のサーバーのみが使用されます。メールログファイルに警告メッセージのログが記録され、残りのサーバーは無視されます。

サーバーごとに、オプションでユーザー名、パスワード、およびポートを指定できます。ここで設定する値は、対応する属性で設定した値よりも優先されます。server 属性は、次の形式で指定します。

[user:password@]server[:port],[user:password@]server[:port],....

たとえば、次の行では、デフォルトのポートを使用し、ユーザーとパスワードを使用しない mail.myco.com というサーバーを指定しています。次に、ユーザー、パスワード、および特定のポートを使用する 2 番目のサーバーを指定しています。

server=mail.myco.com,mail_admin:adm2qzf@mail2.myco.com:24

ColdFusion エンタープライズ版で複数のメールサーバーを指定すると、いずれかのサーバーに接続されるまで、指定した順序で利用可能なサーバーへの接続が試行されます。直前の 60 秒間利用できなかったサーバーには接続は試行されません。

電子署名

メールに電子署名を追加するには、sign、keystore、keystorepassword、keyalias、および keypassword の各属性を次の例に示すように指定します。

<cfmail from="Sender@Company.com" server="sendmail.myCo.com" sign="true" keystore="C:\OpenSSL\bin\hello.jks" keystorepassword="digital" to="Recepient@Company.com" keyalias="crypto" keypassword="signature" subject="Mail with Digital Signature">

送信するすべてのメッセージに電子署名を追加するには、タグに属性を追加するのではなく、ColdFusion Administrator の [サーバーの設定]-[設定] ページで設定を指定します。

タグで属性を指定しない場合は、Administrator 設定が適用されます。また、タグで sign = "true" を設定し、keystore、keystorepassword、keyalias、および keypassword の各属性を指定しない場合は、ColdFusion Administrator を使用して指定したこれらの属性の値が適用されます。

<h3>cfmail Example</h3> 
 
<!--- Delete the surrounding comments to use this example. 
 
<cfif IsDefined("form.mailto")> 
    <cfif form.mailto is not "" AND form.mailfrom is not "" AND form.Subject is not ""> 
        <cfmail to = "#form.mailto#" from = "#form.mailFrom#" subject = "#form.subject#"> 
                This message was sent by an automatic mailer built with cfmail: 
                = = = = = = = = = = = = = = = = = = = = = = = = = = = 
                #form.body# 
        </cfmail>     
        <h3>Thank you</h3> 
        <p>Thank you, <cfoutput>#mailfrom#: your message, #subject#, has been sent to 
            #mailto#</cfoutput>.</p> 
    </cfif>     
</cfif> 
<p> 
<form action = "cfmail.cfm" method="POST"> 
    <pre> 
    TO: <input type = "Text" name = "MailTo"> 
    FROM: <input type = "Text" name = "MailFrom"> 
    SUBJECT:     <input type = "Text" name = "Subject"> 
    <hr> 
    MESSAGE BODY: 
    <textarea name ="body" cols="40" rows="5" wrap="virtual"></textarea> 
    </pre> 
    <!--- Establish required fields. ---> 
    <input type = "hidden" name = "MailTo_required" value = "You must enter a recipient"> 
    <input type = "hidden" name = "MailFrom_required" value = "You must enter a sender"> 
    <input type = "hidden" name = "Subject_required" value = "You must enter a subject"> 
    <input type = "hidden" name = "Body_required" value = "You must enter some text"> 
    <p><input type = "Submit" name = ""></p> 
</p> 
</form>