質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

3回答

7243閲覧

wp_mailを使用して添付ファイルつきメールを送りたい

muro

総合スコア99

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2015/04/06 11:11

wp_mailという関数を使用して添付ファイルつきのメールを送りたいと思っています。
今回添付したいファイルは、メディアライブラリに投稿されている画像一つです。

lang

1$to = "hoge@example.com"; 2$subject = "タイトル"; 3$message = "本文"; 4$headers[] = 'From: テスト <hoge@example.com>'; 5$attachments = array(); 6wp_mail($to, $subject, $message, $headers, $attachments);

http://elearn.jp/wpman/function/wp_mail.html
しかし、上記URLのような解説サイトを見ても$attachmentsについては、「添付ファイルを文字列または配列で指定」としか書かれていないため、具体的にどんな値を入れたらいいのかわかりません。

試しにいろいろなパスを入れて送信してみたのですが、いずれもエラーメッセージのメールが返ってきます。

lang

1$attachments = array("http://example.com/wp-content/uploads/2015/03/hoge.jpg");

このように、メディアライブラリから確認できるファイルのURLを直接入れてみましたがダメでした。

lang

1$attachments = array(get_attached_file($id)); 2/* 3以下のように出力される 4/home/hoge/example.com/wp-content/uploads/2015/03/hoge.jpg 5*/

URLではなく、サーバから見たローカルパス(こういう言い方で正しいのかはわかりませんが…)も出力させて試してみましたが、やはりエラーメールが返ってきます。

変数に入れる値は、URLやパス以外のものになるのでしょうか?
それとも、送信先のメールアドレスや、wp_mailを実行するサーバが、悪影響を与えるなんてことがあるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

$attachmentsにはファイルのパスを入れます。
例えば

lang

1$attachments = array( WP_CONTENT_DIR . '/uploads/file_to_attach.zip' );

の様な形です。
ですので、muroさんの考え方で問題無いと思いますので、原因は他に有るのではないでしょうか。
例えば、メールサーバーの送る容量の設定が少なかったりですね。
メールのエラー内容を提示されるともう少し、詳しい返信ができるかと思います。

投稿2015/04/06 11:25

y_nishizawa

総合スコア154

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

muro

2015/04/07 02:35

回答ありがとうございます。 変数に入れる値はファイルパスで良かったのですね。
guest

0

自己解決

返信が遅くなりました。
今朝は下記のようなコードで試してみたところ、昨日と違ってどういうわけか添付ファイルつきのメールが正常に送信できました。

lang

1$to = "hoge@gmail.com"; 2$subject = "タイトル"; 3$message = "本文"; 4$headers[] = 'From: テスト <hoge@gmail.com>'; 5$attachments = array(get_attached_file($id)); 6wp_mail($to, $subject, $message, $headers, $attachments);

釈然としないのですが、解決済みとしておきます。
お手数をおかけしました。

なお、エラーメールの内容も併せて記載しておきます。
使用していたサーバはXサーバです。
また、wp_mailが実行されるまでの手順ですが、Xサーバ上で作成したメールアドレスにメールが送られると、転送設定を入れているのでphpファイルの方に転送され、そのphpからwp_mailでさらに別のメールアドレスへメールを送信するというものでした。

lang

1Mail Delivery System <MAILER-DAEMON@sv000.xserver.jp> 2 3This is the mail system at host sv000.xserver.jp. 4 5I'm sorry to have to inform you that your message could not 6be delivered to one or more recipients. It's attached below. 7 8For further assistance, please send mail to <postmaster> 9 10If you do so, please include this problem report. You can 11delete your own text from the attached returned message. 12 13 The mail system 14 15<tenso@example.com>: Command died with status 255: "/usr/local/bin/maildrop". 16 Command output: PHP Parse error: syntax error, unexpected ';' in 17 /home/hoge/example.com/public_html/wp-content/themes/example.com/mail/mail_post.php 18 on line 147 Status: 500 Internal Server Error_ X-Powered-By: PHP/5.5.19_ 19 Content-type: text/html_ _ 20 21Final-Recipient: rfc822; tenso@example.com 22Original-Recipient: rfc822;tenso@example.com 23Action: failed 24Status: 5.3.0 25Diagnostic-Code: x-unix; PHP Parse error: syntax error, unexpected ';' in 26 /home/hoge/example.com/public_html/wp-content/themes/example.com/mail/mail_post.php 27 on line 147 Status: 500 Internal Server Error_ X-Powered-By: PHP/5.5.19_ 28 Content-type: text/html_ _ 29 30 31---------- 転送メッセージ ---------- 32From: "テスト" <hoge@gmail.com> 33To: tenso@example.com 34Cc: 35Date: Mon, 6 Apr 2015 19:42:08 +0900 36Subject: test 37test

投稿2015/04/07 02:34

muro

総合スコア99

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ここを読むかぎり、添付ファイルの「フルパス」を指定する必要がありそうな。

https://wordpress.org/support/topic/wp_mail-attachment

投稿2015/04/06 11:19

chokojori

総合スコア971

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問