ファイルのアップロードとメール添付

ここでは、Contact Form 7 のファイルアップロードとメール添付の機能について説明します。この機能により、フォーム経由でのファイルアップロード、そのファイルをメールに添付して送信することが可能になります。

セットアップには2つのステップが必要です。1) フォームにファイルアップロード項目を追加すること。2) アップロードされたファイルをメールに添付するように設定すること。以下、これらの手順について説明していきます。

ファイルアップロード項目をフォームに追加する

他のフォーム項目と同様、Contact Form 7 はファイルアップロード項目 (HTML における <input type="file">) のためのフォームタグとして、filefile* を用意しています。file* は必須項目で、ユーザーが必ずファイルをアップロードすることを求めます。

file と file* で利用可能なオプション
オプション 使用例 説明
id:(id) id:foo input 要素の id 属性値。
class:(class) class:bar input 要素の class 属性値。2個以上のクラスを設定する場合は複数の class: オプションを [file your-file class:y2008 class:m01 class:d01] のように並べる。
filetypes:(ファイルタイプ) filetypes:gif|png|jpg|jpeg 受信可能なファイルタイプ。filetypes: の後にファイル拡張子を並べる。複数のファイルタイプを設定する場合はそれらを ‘|’ (パイプ) でつなげる。
limit:(ファイルサイズ) limit:1048576
limit:1024kb
limit:1mb
受信可能な最大ファイルサイズを指定する。kb (キロバイト)、mb (メガバイト) の接尾辞を使って指定することも可能。それらが省略された場合はバイトが単位になる。小数表記 (例: [file your-file limit:1.5mb]) はできないので注意。

例:

[file your-file filetypes:pdf|txt limit:2mb]

filetypes:limit: が明示的に指定されなかった場合、Contact Form 7 はファイルタイプとファイルサイズにデフォルトの制限を適用します。デフォルトの受信可能ファイルタイプ (の拡張子) は、jpgjpegpnggifpdfdocdocxpptpptxodtavioggm4amovmp3mp4mpgwav, wmv です。デフォルトの受信可能ファイルサイズは 1MB (1048576 バイト) です。

メールへのファイル添付を設定する

アップロードされたファイルをメールに添付するには、ファイルアップロード項目のフォームタグに対応するメールタグをファイル添付フィールドに以下のように追加します。

file attachment

この例では、ファイルアップロード項目のフォームタグは以下のようになっていて:

[file your-file filetypes:pdf]

したがってこれに対応するメールタグは以下のようになります:

[your-file]

ファイル添付フィールドに入力する必要があるのは [your-file] の方です。[file your-file filetypes:pdf] ではないので注意してください。

メールに複数のアップロードされたファイルを添付したい場合は、以下のように単純に並べれば OK です:

[your-file][your-another-file]
ローカルファイル添付

Contact Form 7 3.5 以降のバージョンではローカルファイル添付がサポートされます。ファイル添付フィールドにローカルのファイルパスを入力すると、それらのファイルがアップロードされたファイルと同じようにメールに添付されます。

1行にひとつのファイルパスを指定してください。パスが絶対パスではない場合は、wp-content ディレクトリからの相対パスとして扱われます。

使用例:

[your-file][your-another-file]
/home/you/dir/dir/dir/fantasticpicture.jpg
uploads/2013/08/08/boringguide.pdf



アップロードされたファイルはどのように扱われるか

コンタクトフォームを経由してユーザーがファイルをアップロードすると、Contact Form 7 は 1) PHP のエラーが発生していないか、2) ファイルタイプとファイルサイズは適正か、についてチェックし、問題がない場合はそれらのファイルを一時フォルダに移動させます。その後 Contact Form 7 それらのファイルをメールに添付して送信します。これらの処理が完了したら、Contact Form 7 は一時フォルダにあるファイルを削除します。

一時フォルダはデフォルトでは wp-content/uploads/wpcf7_uploads に作られます。アップロードパスの設定を wp-content/uploads から変更している場合はこれとは異なります。

このフォルダの作成は自動で行われますが、まれに作成に失敗する場合があります。最もありがちな原因はその親フォルダに対して必要な書き込み権限が与えられていないことです。そのような場合は、権限を変更するか、フォルダを手動で作成します。

また、以下のように wp-config.php 内で WPCF7_UPLOADS_TMP_DIR 定数を指定して一時フォルダのパスを設定することも可能です:

define( 'WPCF7_UPLOADS_TMP_DIR', '/your/file/path' );

WPCF7_UPLOADS_TMP_DIR が定義されている場合は、指定されたディレクトリが一時フォルダとして使われます。

アップロードファイルのための一時フォルダが存在し、また書き込み可能であることをよく確認してください。そうでない場合はファイルのアップロードが失敗します。

WordPress のお問い合わせフォームプラグイン。シンプル、でも柔軟。