- ベストアンサー
CentOS7×apache×php メール送信のトラブルシューティング
superside0の回答
- superside0
- ベストアンサー率64% (452/699)
ホスティングサーバーやレンタルサーバーでなら割りと簡単ですが、 自宅サーバーということだと 最近はプロバイダにより25番ポートがブロックされている ことが多いので この場合、単にpostfixをインストールしただけでは、 外部ドメイン宛(つまり別のメールサーバー宛)のメールは届かないことになります。 (ローカルのドメイン宛なら届きますが) このようにスパム不正発行の対策でOP25Bされている自宅のLinuxサーバーから PHP でメールを送りたいとなると 外部のSMTPサーバー(gmailとかyahooとか自分のプロバイダのとか)に対して SMTP認証でメール中継を許可させた上で、メール送信を代替わりしてもらう必要があります。 ただ WindowsのPHPだとphp.iniでSMTP認証の設定が出来るのですが Linuxでとなると ・MTA(postfix)をインストールして postfix側で外部のSMTPサーバーにSMTP認証して送信中継を丸投げする設定を 行っておいてから、PHPの mb_send_mail() では、localhostに送信する または、先にご回答のある通り ・mb_send_mail ()を使うのではなく、外部のSMTPサーバーが指定できるライブラリを使う のどちらかになるでしょう。 余談ですが、このようにしてメール中継を使えば無制限にメールが送れる という訳ではなく、はやり大量にスパムやメルマガを発行すると 外部のSMTPサーバー側で検知されて、 そのSMTP認証アカウントが 凍結(停止)されることになりますし、 ReceivedのIPアドレスがブラックリストに載ることになります。 また、プロバイダでは、Fromのアドレスやドメイン名の制限をしている SMTPサーバーもあります。 この場合、プロバイダのドメインに関係のない、自分の所有している独自ドメイン名を Fromにしてメール送信することは、できないことになります。
関連するQ&A
- phpでメール送信
Warning: Mailserver rejected our "sendmail_from" setting in c:\phpdev\www\test\php\mail\mail.php on line 11 エラー:送信に失敗しました 上記の様にエラーが出て送信できません あて先は、xxxxx@yahoo.co.jp他、どのアドレスに送れません。 php.iniの部分は下記の通りです。 [mail function] ; For Win32 only. SMTP =smtp.mail.yahoo.co.jp ; For Win32 only. sendmail_from =xxxxx@yahoo.co.jp ; For Unix only. You may supply arguments as well (default: 'sendmail -t -i'). ;sendmail_path = ヤフーのsmtpサーバーは、「POP before SMTP」か何かが原因でphpからこの方法でメールは送れませんか? 現在、多くのsmtpサーバーで「POP before SMTP」がかかっていると、ネットで見たのですが、phpからメールを送りたいのですが、どうすればよいでしょか? あと、自宅マシンに独自ドメインを取得しRadishを入れて、smtpサーバを立ち上げて、こちらに送ると、携帯以外には送信出来る様です、でも今時、携帯に送信出来ないと使い物にならないので。こちらは、携帯のサーバーのセキュリティでウチのドメインがはじかれているのでしょうか? 宜しくお願いします。
- ベストアンサー
- PHP
- PHP上でのメールフォーム送信設定
こんにちは。 メールフォームの送信する際の設定について質問があります。 メールフォームの送信ボタンを押した後、下記のようなエラーメッセージが出ました。 Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "smtp.mail.yahoo.co.jp" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\program files\apache group\Apache\htdocs\mytest16-1.php on line 65 yahooメールを使っての送信を考えていて、yahoo側の登録は完了しました。 php.iniファイルは以下のように変更しました。 [mail function] ; For Win32 only. SMTP = smtp.mail.yahoo.co.jp←ここを直しました smtp_port = 25 ; For Win32 only. sendmail_from = xxxxxxx@yahoo.co.jp ↑ここを直しました。 ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ;sendmail_path = その後、Outlookを利用してPOP3送受信も行い、正常に終了しました。 しかし、まだ同様のエラーが出続けてしまいます。 初心者ですので、メールに関しての知識がほとんどありません。どのように解決したらよいのかを詳しく教えていただければと思います。 よろしくお願いします。 環境:WindowsXP, Apache2.0, MySQL1.4, PHP5
- ベストアンサー
- PHP
- 現在趣味でPHPを勉強しています。PHPでメールが送信できずに困ってい
現在趣味でPHPを勉強しています。PHPでメールが送信できずに困っています。お手数をおかけして申しわけありませんが、皆様のお知恵をお借しいただけますでしょうか。 よろしくお願いいたします。 ■サーバ環境 OS:windowsXP PHP:5.3.0 Apahce:2.2.11 ■困っている内容 PHP.iniで以下の設定の上、以下のプログラムでメール送信しましたが、以下のエラーが返ってきて送信できません。 (1)php.ini設定 *プロバイダーに指定されたメールサーバーとメールアドレス。コマンドプロンプトからはtelnetに接続でき、メール送信も可能。 [mail function] ; For Win32 only. ; http://php.net/smtp SMTP = mb.nifty.com ; http://php.net/smtp-port smtp_port = 25 ; For Win32 only. ; http://php.net/sendmail-from sendmail_from = xxxxxx@nifty.com (2)送信プログラム <?php //内部エンコーディング mb_internal_encoding("UTF-8"); //メール内容 $add = "xxxxx@live.jp"; $subject = "test"; $msg = "test"; //メールエンコーディング mb_language("Japanese"); //メール送信 if(mb_send_mail($add,$subject,mb_convert_encoding($msg,"JIS","UTF-8"))){ print "送信完了しました"; }else{ print "メール送信に失敗しました"; } ?> (3)エラー内容 Warning: mb_send_mail() [function.mb-send-mail]: SMTP server response: 501 5.0.0 Invalid domain name in C:\wamp\www\test\mail.php on line 15 メール送信に失敗しました (4)備考 自分でエラー内容からいろいろ調べてみたのですが、そのものずばりのエラー内容は少なく、何が原因かわかりませんでした。エラー内容からPHPがメール送信しようとしてもサーバではじかれているような感じがするのですが、いかがでしょうか。 ご存知の方がいらっしゃいましたらご教示ください。よろしくお願いいたします。
- 締切済み
- PHP
- PHPのメール送信のやり方をご教授ください。
PHPで以下の様に記述したのですが、メールが届きません。どうしたらメールが届くのかご存知の方はご教授お願い致します。私はPHP初心者です。 <?php if (mb_send_mail("メールアドレス", "テストメール", "これはテストです。", "From: メールアドレス")) { echo "メールが送信されました。"; } else { echo "メールの送信に失敗しました。"; } ?> メールアドレスの部分は普段使っているアドレスを入力しています。また、php.iniは以下のように変更致しました。 [mail function] ; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury SMTP = mail.biglobe.ne.jp smtp_port = 587 username = アカウント名@kmf.biglobe.ne.jp password = パスワード ; For Win32 only. ;http://php.net/sendmail-from sendmail_from = アカウント名@kmf.biglobe.ne.jp アカウント名とパスワードは与えられたものを入力しています。試しにヤフーのsmtpを使っても届きませんでした。
- ベストアンサー
- PHP
- メール送信について
こんばんは。PHPでmb_send_mailを使ってメールを送信したいのですが、「Warning: mb_send_mail() [function.mb-send-mail]: SMTP server response: 521 mail not accepted from this domain in C:\Program Files\Apache Group\Apache2\htdocs\samples\chap2\sendmail.php on line 5メール送信に失敗しました。」とエラーが出てしまい上手くできません。 ■PHPスクリプト 1:<?php 2:$to='○○○○○@yahoo.co.jp'; 3:$subject='テストメール'; 4:$body='ようこそ!'; 5:if(mb_send_mail($to,$subject,$body)){ 6: print('メール送信に成功しました。'); 7:} 8:else{ 9: print('メール送信に失敗しました。'); 10:} 11:?> PHP.iniファイルはSMTP=smtp.mail.yahoo.co.jp、sendmail_from=CQW15204nifty.comと設定しております。 参考書通りにやっているのですが、メーラーに送られません。この状態で他に考えられる原因とかありますか?わかる方ぜひ教えてください。
- 締切済み
- PHP
- 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 "メールの送信に失敗しました。"; } ?>
- 締切済み
- PHP
- mb_send_mailに関して
環境:Windows2008 Server R2 64bit/php5.3.22 教えて下さい。 Windows2008 Server R2 64bit 環境にてPHPを動作させ、mb_send_mail()関数を使って メールを送信しようと考えています。 PHPも問題なく動き、mb_send_mail()関数用にphp.ini も以下のようにメンテナンスし、記述も 問題ないかと思われますが、メールの送信ができません。。。 64bitでは何か設定が違うのでしょうか? 教えて頂きたいと思います。 《php.ini》 [mail function] For Win32 only. ← 32bit only とわざわざ記述がある為、64bit ではNG? http://php.net/smtp SMTP = XXXXXX http://php.net/smtp-port smtp_port = 25 For Win32 only. http://php.net/sendmail-from sendmail_from = XXX@XXX.co.jp 《記述内容》 <?php $mailto = "XXX@XXX.co.jp"; $subject = "掲示板"; $content = "新規投稿がありました。 ☆☆☆"; $mailfrom = "From:mail@colcoat.co.jp"; mb_language("ja"); mb_internal_encoding("UTF-8"); if(mb_send_mail($mailto,$subject,$content,$mailfrom)){ }else{ echo "送信できませんでした"; } ?> よろしくお願いします。
- ベストアンサー
- PHP
- ローカル環境でのメール送信ができない
ここでお願いします。 xampp-1.6.4 windows2000 PHP5.2.4 xamppでローカル環境にサーバを置き、PHPスクリプトに記述した mb_send_mail関数で自分宛てにメールの送信テストを行いました。 エラーは出なく成功したと思ったのですが、ルータのリンクが点滅してなく どうやら外部に送信されてないようなのです・・・ 何が原因なのでしょうか? [php.ini] [mail function] SMTP = localhost smtp_port = 25 ; For Win32 only. sendmail_from = 自分用のメールアドレス ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). sendmail_path = "C:\xampp\sendmail\sendmail.exe -t" 送信先も自分用のメールアドレスで [test.php] mb_language("Ja"); mb_internal_encoding("sjis"); @mb_send_mail(自分用のメールアドレス, 'テスト', '本文');
- ベストアンサー
- PHP
- PHPでメールの送信ができない
xampp1.8.0環境から PHPのmb_send_mailでメールの送信をしようとしています。 php.ini SMTP = smtp.xxx.ne.jp (プロバイダから指定されてるもの) smtp_port = 25 xampp1.7.7くらいの環境のときは↑の設定のみで送信できたのですが 新しいバージョンに変えてから送れなくなりました。 古いバージョンのphp.iniと差し替えると送信可能になります。 上記の2行以外でメールの設定に関わる部分はありますでしょうか?
- 締切済み
- PHP
- PHP/XAMPPのローカルホストからのメール送信
1) 困っている点 PHP初心者です。PHPでXAMPPを用いてお問い合わせフォームからローカルホスト経由でメールを飛ばすことができるよう環境設定をしていますが、つまづいています。ご教示くださるようお願いします。他に試す箇所、確認すべき個所はありますでしょうか。 環境条件は、Windows11を使用。メールアドレスは外部プロバイダーメール(OCNの@dream.com)を用いて設定を試みています。XAMPPはApache/2.4.56 (Win64) OpenSSL/1.1.1t PHP/8.2.4 Server at localhost Port 80。 (なお、一通り、PHPの基本的なプログラムは記載し、Marina DB含め、ローカルホストからメールを飛ばさないPHPコードは無事動いています。) 2)PHPのコード ローカルホストから自分のgmailにメールに飛ばすテスト hogehoge@gmail.comのhogehogeの箇所は自分のメールアドレスを記載。PHPではエラーを表示するようにさせた。 <?php error_reporting(E_ALL); ini_set('display_errors', 1); mb_language('Japanese'); mb_internal_encoding('utf-8'); $to = 'hogehoge@gmail.com'; ←hogehogeは自分のgmailアドレス $subject = 'メール送信テスト:test for PHP'; $message = 'メール送信テスト:test for PHP'; $headers = 'From: 自動送信 <hogehoge@dream.com>' . "\r\n"; ←hogehogeは自分のプロバイダーアドレス $headers .= 'Content-Type: text/plain; charset=utf-8'; if(mb_send_mail($to, $subject, $message, $headers)) { echo "送信完了"; } else { echo "送信失敗"; } ?> 3) phpホルダー内のphi.iniの記載 (一部抜粋) [mail function] ; For Win32 only. ; https://php.net/smtp SMTP=localhost ← 修正 https://php.net/smtp-port smtp_port=25 ← 修正 sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" ← 修正 上記のSMTP、Portのパラメータは下記のHPを参考にし、倣った。 https://miya-system-works.com/blog/detail/xampp-send-mail/ *なお、ここの箇所では下記のパラメータでも行ったがNG。エラーメッセージは5)ii)に記載。 このパラメータはsendmail.iniで入力したものと同じ。 SMTP = smtp.ocn.ne.jp smtp_port = 465 sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" 4) sendmail内ホルダーのsendmail.iniの記載 (一部抜粋) hogehogeの箇所は自分のアドレス、P/Wを入力。 pop3_~=~の箇所は三行空欄。 smtp_server=pop.ocn.ne.jp ← 修正(プロバイダー案内通り) smtp_port=465 ← 修正 (プロバイダー案内通り) smtp_ssl=auto ← 修正 auth_username=hogehoge@dream.com ← 自分のアドレスに修正 auth_password=hogehoge ← 自分のPWに修正 ; if your smtp server uses pop3 before smtp authentication, modify the ; following three lines. do not enable unless it is required. pop3_server= ← デフォルトのまま空欄 pop3_username= ← デフォルトのまま空欄 pop3_password= ← デフォルトのまま空欄 force_sender=hogehoge@dream.com ← 自分のアドレスに修正 5) ブラウザーでの表示 (上記2)のコードを走らせた後) ポートに接続できないとのエラーメッセージ。しかし、6)に記載したThunderbirdからはポート:465からメールを送れている。 i) SMTP:localhost,、SMTPポート:25の場合 Warning: mb_send_mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\test\test_sendmail_2.php on line (mb_sendとしたPHPコードのラインの箇所) 送信失敗 ii) SMTP :smtp.ocn.ne.jp、 SMTPポート:465の場合 Warning: mb_send_mail(): Failed to connect to mailserver at "pop.ocn.ne.jp" port 465, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\test\test_sendmail_2.php on line (mb_sendとしたPHPコードのラインの箇所) 送信失敗 6)補足 なお、プロバイダーメールアドレス、PWは念のためローカルPC上にメールソフトを新規にThunderbirdを落とし、設定したところ、溜まっていたプロバイダーメールは全て落ちてきたのでPWに間違いはないことを確認済み。その際、SMTPサーバー名とsmtp_portは自動検出されたので、手打ちはしていない。Thunderbirdでは自動的にSMTPサーバー名:smtp.ocn.ne.jp、ポート:465で設定されていた。 以上よろしくお願いします。説明不足、用語の使い方で適切でない箇所がありましたら、修正、追記します。
- ベストアンサー
- その他(インターネット・Webサービス)
お礼
有難うございます。 >外部のSMTPサーバー(gmailとかyahooとか自分のプロバイダのとか)に対して >SMTP認証でメール中継を許可させた上で、メール送信を代替わりしてもらう必要があります。 なるほど、少しわかってきました。