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

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

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

Dovecotとは、POPやIMAPサーバーを提供するMDA(メール配送エージェント)の一つです。

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

Q&A

解決済

3回答

779閲覧

PHPからメールを送信

ryohasegawa

総合スコア437

Dovecot

Dovecotとは、POPやIMAPサーバーを提供するMDA(メール配送エージェント)の一つです。

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

0グッド

0クリップ

投稿2018/07/19 08:48

編集2018/07/19 09:39

CentOS7上でApacheを起動させWebサーバーを動かしています。
以下のテストコードを作成し、アクセスするとメールを送信し、結果を返すコードです。
********************はメールアドレスです。

php

1<?php 2ini_set('display_errors', "1" ); 3 4echo "メール送信"; 5 6mb_language("Japanese"); 7mb_internal_encoding("UTF-8"); 8 9$to = '********************'; 10$subject = 'title'; 11$message = 'body'; 12$headers = 'From:********************' . "\r\n"; 13 14$send_mail = mail($to, $subject, $message, $headers); 15 16if ($send_mail) { 17 echo "ok"; 18} else { 19 echo "no"; 20} 21?>

アクセスすると、メール送信 だけ表示され ok や no は表示されません。
もちろん、メールも届いていません。

CentOSにPostfixとDovecotは、インストールしてありますが、設定がよくわからないでのもしかしたら間違っているかもしれません。
ファイヤーウォールでsmtp,110/tcp,143/tcpは許可してります。

重要な設定箇所や見逃している場所など教えてください。

追記

SaintKnowledgeさんにini_set('display_errors', "1" );を教えていただき追加し実行した結界以下のエラが返ってきました。

Fatal error: Uncaught Error: Call to undefined function mb_language() in /var/www/html/index.php:6 Stack trace: #0 {main} thrown in /var/www/html/index.php on line 6

yum -y install php-mbstring の実行結果

[root@localhost www]# yum -y install php-mbstring 読み込んだプラグイン:fastestmirror, versionlock Loading mirror speeds from cached hostfile * base: mirrors.cat.net * epel: mirror.dmmlabs.jp * extras: mirrors.cat.net * remi-safe: ftp.riken.jp * updates: mirrors.cat.net 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ php-mbstring.x86_64 0:5.4.16-45.el7 を インストール --> 依存性の処理をしています: php-common(x86-64) = 5.4.16-45.el7 のパッケージ: php-mbstring-5.4.16-45.el7.x86_64 --> 依存性解決を終了しました。 エラー: パッケージ: php-mbstring-5.4.16-45.el7.x86_64 (base) 要求: php-common(x86-64) = 5.4.16-45.el7 インストール: php-common-7.2.8-1.el7.remi.x86_64 (@remi-php72) php-common(x86-64) = 7.2.8-1.el7.remi 利用可能: php-common-5.4.16-45.el7.x86_64 (base) php-common(x86-64) = 5.4.16-45.el7 問題を回避するために --skip-broken を用いることができます。 これらを試行できます: rpm -Va --nofiles --nodigest

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

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

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

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

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

guest

回答3

0

設定がよくわからないでのもしかしたら間違っているかもしれません。

mail 送信は設定を理解しないまま、安全使えるようなシステムではありません。
また、mail() を使用した mail 送信は実務で使用されることは無いです。

SMTP サーバは Gmail 等の外部に頼り、送信システムはライブラリを使用した学習をオススメします。
学習の敷居をかなり下げることができます。

投稿2018/07/19 09:18

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

とりあえずは、エラーが出ていないか、apacheのerror_logで確認ですかね。
レンタルサーバ等でapacheのerror_logが見れないようなら、PHP最上部に、

<?php ini_set('display_errors', "1" ); echo "メール送信"; ・・・・

とすれば、何か出るかもです。あとは1行1行にecho "1";echo "2";とか付けて行って、どこで止まっているか、把握するとか。

もしエラー情報が出ていてわからないようであれば、追記お願いします。

投稿2018/07/19 09:15

SaintKnowledge

総合スコア368

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

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

SaintKnowledge

2018/07/19 09:20 編集

投稿かぶりました^^;。 Kosuke_Shibuyaさんと同じです。
ryohasegawa

2018/07/19 09:18

回答ありがとうございます。 エラーが返されました。 エラー内容は追記します。
SaintKnowledge

2018/07/19 09:23

拝見しました。一旦ググって、調べてみて結果を下さいませ。 専用サーバですか?レンタルサーバ? またはローカルのXMAPPとかですか?
ryohasegawa

2018/07/19 09:24

自作サーバーです。
guest

0

ベストアンサー

これを実行したらどうなりますか?

php

1<?php 2 3ini_set('display_errors', true); 4error_reporting(E_ALL); 5 6 7echo "メール送信"; 8 9mb_language("Japanese"); 10mb_internal_encoding("UTF-8"); 11 12$to = '********************'; 13$subject = 'title'; 14$message = 'body'; 15$headers = 'From:********************' . "\r\n"; 16 17$send_mail = mail($to, $subject, $message, $headers); 18 19if ($send_mail) { 20 echo "ok"; 21} else { 22 echo "no"; 23} 24?>

投稿2018/07/19 09:11

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ryohasegawa

2018/07/19 09:22

回答ありがとうございます。 追記のようなエラーが返ってきます。
退会済みユーザー

退会済みユーザー

2018/07/19 09:24

mbstring モジュールがインストールされていないのでしょう。 yum -y install php-mbstring でインストールですわ。
ryohasegawa

2018/07/19 09:27

yum install php-mbstring を実行すると、問題を回避するために --skip-broken を用いることができます。 これらを試行できます: rpm -Va --nofiles --nodigest と言われるんですが、yum install php-mbstringでは、実行されないという事ですか?
退会済みユーザー

退会済みユーザー

2018/07/19 09:30 編集

あなたのことだ。 きっとインストール済みのレポジトリを指定してインストールしていないのでしょう。 エラーは一部ではなく、全て記述してください。これまでなんども指摘されているはず。
ryohasegawa

2018/07/19 09:39

追記しました。
退会済みユーザー

退会済みユーザー

2018/07/19 09:41

yum -y --enablerepo=remi-php72 install php-mbstring
ryohasegawa

2018/07/19 09:43

実行できました。 ありがとうございます。 --enablerepo=remi-php72を追加することでPHPのバージョンを指定したということでしょうか?
退会済みユーザー

退会済みユーザー

2018/07/19 09:46

違います。 指定したのはレポジトリです。
ryohasegawa

2018/07/19 09:48

インストール: php-common-7.2.8-1.el7.remi.x86_64 (@remi-php72) を指定したというわけですか?
退会済みユーザー

退会済みユーザー

2018/07/19 09:49

指定したのは remi-php72 だけ
ryohasegawa

2018/07/19 09:53

なるほど、わかりました。 ありがとうございます。 問題は完全には解決していませんが、okが表示されるところまで行きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問