説明
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" idnaversion="IDNA encoding" 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" encrypt "true|false" recipientcert = <path to the public key cert> encryptionalgorithm = "DES_EDE3_CBC, RC2_CBC, AES128_CBC, AES192_CBC, AES256_CBC"> (オプション)メールメッセージ本文や cfmailparam のタグ </cfmail>
このタグの属性は attributeCollection 属性で指定でき、その値は構造体になります。attributeCollection 属性で構造体の名前を指定し、タグの属性名を構造体のキーとして使用します。
関連項目
cfmailparam、cfmailpart、cfpop、cfftp、cfhttp、cfldap、Wrap、メールサーバーでの ColdFusion の使用(『Developing ColdFusion アプリケーションの開発』のメールの送受信にあります)
履歴
ColdFusion(2018 リリース):属性 idnaversion が追加されました。
ColdFusion 11:属性、暗号化、 recipientcert および encryptionalgorithm が追加されました。
ColdFusion 8.0.1:Remove 属性が追加されました。
ColdFusion 8:priority、useSSL、および 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: - 以下の属性、文字セット、 failto 、 replyto 、ユーザー名、パスワード および wraptext が追加されました。
- server 属性で複数のメールサーバーを指定できるようになりました。
- ColdFusion Administrator の「メール設定」ページにいくつかの設定オプションが追加されました。
ColdFusion MX:SpoolEnable 属性が追加されました。ColdFusion 9:メールに電子署名を追加できるようになりました。新規に追加された関連属性を以下に示します:sign、 keystore 、 keystorepassword 、 keyalias 、 keypassword および remove。
属性
属性 |
必須/オプション |
デフォルト |
説明 |
---|---|---|---|
bcc |
オプション |
|
メッセージのコピー先のアドレスです。メッセージのヘッダにはリストされません。複数のアドレスを指定するには、各アドレスの間をコンマで区切ります。 |
cc |
オプション |
|
メッセージのコピー先のアドレスです。複数のアドレスを指定するには、各アドレスの間をコンマで区切ります。 |
charset |
オプション |
ColdFusion Administrator の「メール」ページで選択した文字エンコード(utf-8) |
ヘッダを含むメールメッセージの文字エンコードです。一般的に使用される値を次に示します。
|
debug |
オプション |
no |
|
failto |
オプション |
|
メールシステムから配達失敗の通知が送信されるアドレスです。メールエンベロープの逆順パスの値を設定します。 |
から |
必須 |
|
電子メールメッセージの送信者の名前です。
|
は、 |
必須 |
|
メッセージ受信者の電子メールアドレスです。
|
subject |
必須 |
|
メッセージの表題です。ダイナミックに作成することができます。例えば、顧客に最新情報を通知するメッセージを送信するには、"注文番号 #Order_ID# のステータス" などを指定します。 |
group |
オプション |
CurrentRow |
レコードのセットをグループ化して、1 つのメッセージとして送信する場合に使用するクエリ列です。例えば、顧客に 1 セットの請求書を送信する場合、"Customer_ID" でグループ化します。大文字と小文字は区別されます。指定したフィールドでデータをソートする場合、隣り合う重複データは削除されます。 |
groupcasesensitive |
オプション |
No |
ブール値。group 属性を使用するときに、大文字と小文字を区別するかどうかを指定します。大文字と小文字の区別があるレコードをグループ化する場合は、この属性を Yes に設定します。 |
idnaversion | オプション | 2008 | 適用する IDNA エンコードを選択します。IDNAversion 属性が指定されていない場合は、JVM フラグで指定されたエンコードが適用されます。Idnaversion が指定されている場合は、対応するエンコーディングが適用されます。 |
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 |
メッセージの優先度レベルです。次のいずれかの値を指定します。
|
query |
オプション |
|
メッセージのデータを取り出す cfquery の名前です。複数のメッセージを送信する場合や、メッセージ内でクエリ結果を送信する場合は、この属性を使用します。 |
remove |
オプション |
no |
yes の場合、メールが正常に送信された後に添付ファイル(ある場合)が削除されます。 |
replyto |
オプション |
|
受信者が返信するときに宛先として使用するアドレスです。 |
server |
オプション |
|
メッセージの送信に使用する SMTP サーバーアドレス、または(エンタープライズ版のみ)サーバーアドレスのコンマ区切りリストです。ここか ColdFusion Administrator で、少なくとも 1 つのサーバーを指定する必要があります。ここで設定する値は、Administrator で設定する値よりも優先されます。ポートの指定を含む値は、port 属性で設定する値よりも優先されます。詳細については、「使用方法」を参照してください。 |
sign |
|
|
メールに電子署名を追加します。true に設定されている場合、送信するすべてのメッセージに電子署名が追加されます。 |
spoolenable |
オプション |
|
メールをスプールするか、常にメールを直ちに送信するかを指定します。ColdFusion Administrator の「配達されるメールメッセージをスプール」で設定する値よりも優先されます。
|
startrow |
オプション |
1 |
処理を開始するクエリ内の行です。 |
timeout |
オプション |
|
SMTP サーバーへの接続がタイムアウトになるまで待機する秒数です。ここで設定する値は、Administrator で設定する値よりも優先されます。 |
type |
オプション |
text/plain |
メッセージの MIME タイプです。有効な MIME メディアタイプまたは次のいずれかの値を指定できます。
|
username |
オプション |
|
認証を要求する SMTP サーバーに送信するユーザー名です。password 属性が必要です。 |
useSSL |
オプション |
|
Secure Sockets Layer を使用するかどうかを指定します。 |
useTLS |
オプション |
|
Transport Level Security を使用するかどうかを指定します。 |
wraptext |
オプション |
テキストをラップしない |
メールテキストの最大行を文字数で指定します。指定した文字数よりも行が長い場合は、指定した位置の直前の空白文字(タブやスペースなど)が改行に置き換わります。行に空白文字がない場合は、指定した位置に改行が挿入されます。この属性の一般的な値は 72 です。 |
encrypt | オプション | false | 電子メールを暗号化する必要がある場合に指定します。 |
recipientcert | オプション | false | 受信者の公開キー証明書のパスです。 |
encryptionalgorithm | オプション | 使用する暗号化アルゴリズムです。 使用できるアルゴリズムは次のとおりです。
暗号化サポートは、S/MIME によって提供されます。 |
使用方法
指定したアドレスにメールメッセージを送信します。メールメッセージには、添付ファイルを含めることができます。タグ本文に CFML コードを入れて、メール出力を生成できます。cfmailparam タグと cfmailpart タグは、cfmail タグ本文内でのみ使用できます。メールメッセージは、シングルまたはマルチパートにできます。マルチパートのメールメッセージを送信する場合は、メッセージの内容をすべて cfmailpart タグ内に入れる必要があります。cfmailpart タグ内にないマルチパートのメッセージテキストは無視されます。
cfmail タグは、メールをディスクにスプールするときに添付ファイルのコピーを作成しません。スプール機能を有効にした添付ファイルのメッセージを送信するために cfmail タグを使用し、その添付ファイルを削除するために cffile タグを使用する場合、ファイルが削除された後でメール処理が実行される可能性があるため、メールが送信されないことがあります。この場合は、メールログに FileNotFound 例外が記録され、電子メールは送信されません。属性で SpoolEnable="No" を設定するか、ColdFusion Administrator でスプール機能を無効にすると、この問題を防ぐことができます。スプール機能を無効にすると、電子メールは直ちに配達されるようになります。
type="text" を設定すると、送信するメッセージ内の空白文字が圧縮される場合があります。この問題を解決するには、ColdFusion Administrator でサーバーの設定/設定に移動し、「空白抑制の有効化」オプションを選択解除します。
メールアドレスの指定
メールアドレスは、次のどの形式でも指定できます。
形式 |
例 |
---|---|
user (server)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="電子署名を使用したメール">
送信するすべてのメッセージに電子署名を追加するには、タグに属性を追加するのではなく、ColdFusion Administrator の「サーバーの設定/設定」ページで設定を指定します。
タグで属性を指定しない場合は、Administrator 設定が適用されます。また、タグで sign = "true" を設定し、keystore、keystorepassword、keyalias および keypassword の各属性を指定しない場合は、ColdFusion Administrator を使用して指定したこれらの属性の値が適用されます。
例
<h3>cfmail の例</h3> <! --- この例を使用するには前後のコメントを削除してください。 <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> <! ---必須フィールドを確立します。---> <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>
ColdFusion 11 では、以下の手順に従ってメールを暗号化できます。
- メールの送信先ユーザーの証明書を取得します(.p7c 形式)。
- recipientcert 属性に対して生成された証明書のパスを指定します。例:
<cfmail ... encrypt="true" ENCRYPTIONALGORITHM = "DES_EDE3_CBC" recipientcert="#path#cert.p7c" >
- ColdFusion Administrator からメールサーバーを設定します。
- Actionscript を使用して、 ColdFusion が設定されている JRE のバージョンに応じて、Java 暗号化拡張機能(JCE)に無制限の強度のポリシーファイルをダウンロードします(キーサイズが128よりも大きい暗号化アルゴリズムを使用している場合)。
- メールを送信します。次の例を参照してください。
<cfset path = GetDirectoryFromPath(getCurrentTemplatePath())> <cfset algorithms = "DES_EDE3_CBC,RC2_CBC,AES128_CBC,AES192_CBC,AES256_CBC"> <cfloop index="algo" list="#algorithms#"> <cfmail to="joe@work.com" from="bob@work.com" subject="#algo# アルゴリズムを使用したメッセージの送信" sign ="false" encrypt="true" ENCRYPTIONALGORITHM = "#algo#" recipientcert="#path#cert.p7c" > このメッセージは、#algo# アルゴリズムを使用して暗号化されています。 </cfmail> </cfloop>
attribute idnaversion の使用例
<cfprocessingdirective pageencoding="utf-8"> <cfmail to="sample@example.com" from="test@example.com" username="username" password="password" server="localhost" subject="hello" debug="true" idnaversion="2003"> Hello World ! </cfmail>