こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

PHP でmb_send_mailが上手くいかない

PHP初心者です。現在、自分のパソコンにXAMPPをインストールして、
Apacheを起動し、PHPのサンプルを勉強しいています。
mb_send_mail自体はTRUEで返ってくるのに、メーラーには何も届きません。
書籍やネットにあったサプルをいろいろ調べたのですが、
みな、同じ現象です。

php.iniの設定は下記の通りです。(phpは5.4.7)
[mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
SMTP = localhost
smtp_port = 587  <----25にしても変わりませんでした。

; For Win32 only.
http://php.net/sendmail-from
sendmail_from = postmaster@localhost

PHPのソース
<?php

mb_language("Japanese");
mb_internal_encoding("UTF-8");

if (mb_send_mail("cy0***@md.point.ne.jp", "テストメール", "これはテストです。", "From: chibikind***@yahoo.co.jp")) {
echo "メールが送信されました。";
} else {
echo "メールの送信に失敗しました。";
}

?>

投稿日時 - 2013-04-03 13:23:53

QNo.8025090

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

> smtp_port = 587
SMTPのポート番号に587を指定すると言う事は、接続にSMTP認証を使用しているはずです。
SMTP認証が必要な場合はmb_send_mail()が使用できませんので、認証が不要な25番ポートで使用できるSMTPサーバを使用するか、PEAR::MailなどSMTP認証に対応できる機能を使用するしかありません。

投稿日時 - 2013-04-04 17:51:36

補足

XAMPPについているMerqryを調べて設定してみましたが、それでもダメでした。
PEARは使った事が無いのでこれから調べてみようと思います。
それにしてもたかがローカルからローカルへメールを送る事すらできないので、PHPって難しいなあと思いました。

投稿日時 - 2013-04-04 19:22:15

お礼

ご回答ありがとうございました。

投稿日時 - 2013-04-18 06:38:18

ANo.4

phpの用意したmail系の関数はWinでは制限もおおいでしょうし
PEAR::Mailなどで外部サーバー経由で送った方がよいとおもいますよ

http://pear.php.net/manual/ja/package.mail.mail.php

投稿日時 - 2013-04-04 10:41:27

補足

ありがとうございます。教えて頂いたサイト、PHP初心者の自分にはちょっと敷居が高いようで、自分のパソコンにメールを送ってテストしてみたいだけなのです。

投稿日時 - 2013-04-04 17:29:27

お礼

ご回答ありがとうございました。

投稿日時 - 2013-04-18 06:39:32

ANo.3

ローカルでSMTPサーバを動かしていないのであれば、インターネット接続に利用しているプロバイダーのSMTPサーバを利用することになります。
SMTP = localhost にはプロバイダーのSMTPサーバのホスト名又はIPアドレス、smtp_port = 587 にはプロバイダーから指定されているSMTPサーバのポート番号を入れます。
また、sendmail_from = postmaster@localhost にはご自身のメールアドレスを設定してください。

プロバイダーのSMTPサーバがSMTP認証やPOP before SMTPなど認証が必要な場合mb_send_mail()でメール送信できませんので、ご自身でSMTPサーバを用意するなどの対策が必要になります。

投稿日時 - 2013-04-03 17:40:11

補足

ありがとうございます。おっしゃる通り(多分なのですが)やってみたのですが、
やっぱり送信できませんでした。

[mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
;SMTP = localhost
SMTP = *****.md.point.ne.jp
smtp_port = 587

; For Win32 only.
http://php.net/sendmail-from
;sendmail_from = postmaster@localhost
sendmail_from = *****@md.point.ne.jp

SMTPサーバをたちあげる事までは考えておらず、(やり方もわからない)
PHPとmysqlの勉強がしたかっただけなのですが、
なかなかうまくいかないものですね。
XAMPPについているMerquryを起動してphp.iniを書き換えればいいのでしょうか?

投稿日時 - 2013-04-04 17:21:17

お礼

ご回答ありがとうございました。

投稿日時 - 2013-04-18 06:36:10

ローカルホストにメールサーバ入ってるの?
入ってないなら使ってるプロバイダのSMTPとか指定しないとだめだよ。

投稿日時 - 2013-04-03 13:46:16

補足

すみません。XAMPPのapacheとPHPのみでメール送信できる物と思い、SMTPサーバーの稼働等は行っておりません。
php.iniのSMTPを自分のメーラーのSMTPサーバと同にしてみましたが、それでもダメでした。

投稿日時 - 2013-04-03 16:47:53

お礼

ご回答ありがとうございました。

投稿日時 - 2013-04-18 06:35:10

ANo.1

SMTP = localhost と設定されていますが、ご自身のパソコンでSMTPサーバは稼働していますか?

投稿日時 - 2013-04-03 13:44:56

補足

すみません。XAMPPのapacheとPHPのみでメール送信できる物と思い、SMTPサーバーの稼働等は行っておりません。

投稿日時 - 2013-04-03 16:46:14

お礼

ご回答ありがとうございました。

投稿日時 - 2013-04-18 06:34:33

あなたにオススメの質問