
目次
wp_mailでファイルを添付する方法
wordpressでアプリ作成する際に、アプリ中の機能やwordpressの機能(投稿作成・更新)をトリガーにしてメールを送る必要がある場合があると思います。ユーザーや管理者への通知機能はアプリケーション構築の上で加えたい機能の一つだと思うので、今回はwp_mailを使用してメールにファイル(今回は画像)を添付する方法をご紹介します。
先取り
本記事の内容は集約すると下記になります。
wp_mail
の第5引数に添付したいファイル名を指定する- 指定するフィアル名はファイルのシステムパスなので、テンプレートのディレクトリではない。
WP_CONTENT_DIR
でシステムパスを取得できる- 第4引数のheaderを指定しない場合は、空文字を指定する
解説
基本的な使い方
構成
<?php wp_mail( $to, $subject, $message, $headers, $attachments ); ?>
パラメータ
型 | 必須かどうか | 初期値 | |
---|---|---|---|
$to | 文字列 or 配列 | 必須 | なし |
$subject | 文字列 | 必須 | なし |
$message | 文字列 | 必須 | なし |
$headers | 文字列 or 配列 | 任意 | 空文字列 |
$attachments | 文字列 or 配列 | 任意 | 空文字列 |
$attachments
の指定
wordpressの定数WP_CONTENT_DIR
を使用してファイルパスを指定します。
出力されるパスはもちろん環境によって異なりますが、以下のようにwp-contentディレクトリまでのパスを吐き出します。
Linux環境:/var/www/html/wp/wp-content
Windows環境:C:\Program Files\Apache Group\Apache2\htdocs.tokyoac\wp/wp-contentt
注意点としては末尾に「/」がついてこない点です。
<?php $to = "送信先のメールアドレス"; $subject = "件名"; $message = "メッセージ"; $attachments = array(WP_CONTENT_DIR . '/path/to/file.png'); wp_mail($to, $subject, $message, '', $attachments); ?>
終わりに
今回はwp_mailを使ってファイルを添付する方法を紹介しました。ちなみに僕の場合は会員のみ画像をダウンロードできるページ内で、ユーザーが画像をダウンロードしたタイミングでサイト管理者にユーザー情報とダウンロードした画像の情報を含めて送信するという機能に対して使用しました。本記事ではメールへのファイル添付に焦点を当てているので、wp_mailのその他のパラメータについての解説は有りませんが、メールのヘッダーは基本的に十分すぎるぐらいに設定しておくのがいいそうです。