
テスト環境でメールの送信テストをしています。
【環境】
OS=Amazon Linux(AMI 2016.03.1)
インストール環境
sendmail.x86_64 = 8.14.4-8.12.amzn1
php.x86_64 = 5.3.29-1.8.amzn1
php-cli.x86_64 = 5.3.29-1.8.amzn1
php-common.x86_64 = 5.3.29-1.8.amzn1
httpd.x86_64 = 2.2.31-1.7.amzn1
httpd-tools.x86_64 = 2.2.31-1.7.amzn1
【状況】
windows環境からsshで接続して操作しています。
AWS EC2から社内の自分のメールアドレスへ向けて送信テストをしています。
【内容】
mail()を使った関数では、社内アドレスにメールは届くのですが、mb_send_mail()を使うと、実行したWEB画面が真っ白で、メールも届いておりません。
社内アドレスに届くソース(mail関数)
-------------------------------
<?php
#日本語メール送信
$to = "xxxxxx@xxx.co.jp"; #宛先
$subject = "送信テスト"; #題名
$body = "本文テスト"; #本文
$from = "test@localhost.localdomain"; #差出人
if (mail($to, $subject, $body, "From:".$from)){
print ("成功");
}else{
print ("エラー");
}
?>
-------------------------------
php.ini を編集し以下を設定
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.func_overload = 7
-------------------------------
届かないmb_send_mailソースは、上記ソースの「mail」の部分を「mb_send_mail」へ変更したものです。
あと、現在利用可能な関数リスト出したところ、mb_send_mailの記述がありませんでした。
関数リストを確認したソース
-------------------------------
<pre>
<?php
print_r(get_defined_functions());
?>
</pre>
-------------------------------
関数リスト、mailは829で定義されていますが、mb_で始まる関数が1つもありませんでした。
Array
(
[internal] => Array
(
[0] => zend_version
[1] => func_num_args
[2] => func_get_arg
#中略
[829] => mail
#中略
[1012] => zip_entry_compressedsize
[1013] => zip_entry_compressionmethod
)
[user] => Array
(
)
)
-------------------------------
おそらく、この「internal」へmb_send_mailが登録されれば、mb_send_mail()関数が使えると思うのですが、いろいろサイトを巡回してもmb_send_mailを定義するような記述はなく、通常はデフォルトで登録されているのかな?と思いました。
mb_send_mail()関数を使ってメール送信出来るようにするにはどうすれば良いでしょうか?
もしくは、mb_send_mailを自身で定義する場合はどうすれば良いでしょうか。
PHPの学習をはじめて2週間目ですが、問題が解決せずずっと悩んでおります。
良きお知恵を拝借出来ればと思い、質問させて頂きました。
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
phpinfo()で確認しましょう。
mb_send_mailは、mbstring拡張モジュールが入っていないと使えません。
phpinfo の上の方にあるConfigure Commandの中に–enable-mbstring–という記述があれば問題なく利用できます。
いいいちろう様
早速の回答ありがとうございます!
数日悩んだ事が解決しました。
ご指摘頂いたphpinfo()で確認しましたら、Configure Commandの中に「-enable-mbstring-」記述が無かったので
yumより拡張モジュールをインストールしました。
$sudo yum install php-mbstring -y
そして、php.iniの[mbstring]以下の項目を修正。
httpdのデーモンをリスタートしましたら
print_r(get_defined_functions()); で 1040番目に関数が登録されました。
[1040] => mb_send_mail
早速、作成していたphpファイルをブラウザより実行したら
無事、mb_send_mail()関数でメールの送信が出来ました。
ありがとうございました。
【mbstring拡張モジュール】この一言のおかげで問題が解決出来ました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpでのメール転送(添付ファイ...
-
PHPで、複数のアドレスにメール...
-
さくらサーバーにて、phpからメ...
-
サーバーによってはmb_send_mai...
-
excel VBAでメールを送る方法に...
-
mb_send_mail関数が利用出来ない
-
メール送信プログラム
-
VBA EXCELからメールを送...
-
【初歩?】変数をセットできな...
-
PHPのif文でその処理を途中で抜...
-
データ送信をボタンを押さずに...
-
ファイルの更新日時でのソート
-
インクルードした部分が表示さ...
-
onedrive にexcelファイルをア...
-
.htaccessにphp_valueが使用できな
-
「クラス関数」「メンバ関数」...
-
file_get_contentsでcss読み込み
-
#!/usr/local/bin/phpはどこに...
-
PEARコマンドが使えない・・・
-
PHPExcel処理速度が遅い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サーバーによってはmb_send_mai...
-
ローカル環境でのメール送信
-
フォームからメール送信
-
メールを受信で文字化け
-
さくらサーバーにて、phpからメ...
-
日本語メールの送信する関数
-
初心者です。PHPのfunction...
-
phpでメールフォームを作成した...
-
メール送信プログラム
-
mailやmb_send_mail関数で、本...
-
PHPからメールを送る@さくらイ...
-
phpでmail()関数以外のやり方に...
-
php 完了画面の送信メールのコ...
-
mb_send_mail関数が利用出来ない
-
PHPsendmailにて送信元を変更
-
ワードプレス 予約システム
-
PHPでメールを送信するには
-
コマンドプロンプト、VBSでの添...
-
PHPMailerのコードエラーが解決...
-
sendmail.phpとthanks.php
おすすめ情報