日本語メールの送信方法
- mb_send_mail関数を使った日本語のメール送信の方法を解説します。
- 特に問題なく、GmailやYahooメールなどでも文字化けの問題は発生しません。
- また、マニュアルにはサンプルコードがありますが、その作者やプロジェクトメンバーについては不明です。
- ベストアンサー
日本語メールの送信する関数
日本語のメール送信には、mail関数のラッパー関数であるmb_send_mailが使い勝手が良いようですが、mb_send_mail関数マニュアルにMaill関数を使った日本語メール送信サンプルが載っています。 http://jp.php.net/manual/ja/function.mb-send-mail.php#77899 これって、gmail、Yahooメールなど自分がテストした限りでは、特に文字化けなどせず問題ありません。なので、ライブラリなど使わずに、Mail関数でいいんじゃないかと思います。 このサンプルのmail関数を使った日本語メール送信で特に問題になることはあるのでしょうか? ちなみに、関係ないと思いますが、マニュアルにサンプルを乗せているこの人たちは何者(マニュアルプロジェクトメンバー?)なのでしょうか?
- midorin_h
- お礼率10% (14/136)
- PHP
- 回答数1
- ありがとう数0
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>mb_send_mailが使い勝手が良いようです 昔はマルチバイト系の処理があまくてとても使い物になりませんでしたが だいぶ改善されたのでしょうか? 私だったらお勧めしません。 メールサーバーに外部のものを利用するならPEAR:MailなどSMTPを 利用したものを使った方が賢明です http://pear.php.net/manual/ja/package.mail.mail.php
関連するQ&A
- mail関数に送信について
環境 RedHatLinux 9 APACHE 2.0.48 PHP 4.3.4 まず、PHPの質問ではないかもしれませんがご容赦ください。 PHPからmail関数(またはmb_send_mail関数)にてメールを出力すると、 送信先のアドレスによってメールが届いたり届かなかったりします。 詳しく説明すると、自分の会社のアドレスには届かず、 自宅でのインターネット接続の際のプロバイダ契約時に頂いた 個人用のメールアドレスには届くようです。 なぜ、そのような現象が起こっているかが分からず、1週間近く悩んでいますが、 一向に解決できていません。 いままで似たような現象が発生した方、または何となく理由がわかる方、 ヒントとなるような内容が少しでも良いので、よろしくお願いします。
- ベストアンサー
- PHP
- mb_send_mail関数により送信されるメールのヘッダで送信元メールアドレスがうまく設定されません
さくらサーバで2つのドメインを持っており、その一方のドメインを用いたサイトを構築しています。 このサイトより、phpのmb_send_maiにより送信されるメールヘッダーに送信元メールアドレス(上記一方のドメインを含む)を設定しようといろいろ試したのですが、 送信されたメールの送信元アドレスとして、 上記一方のドメインではなく、他方のドメイン(初期ドメインではなく、1つ目にとったドメイン)の主要部(メールアドレスであれば、本来@の前に配置される部分)が盛り込まれてしまいます。 mb_send_mai関数の第四引数として、"From:.....@*******"などと設定しても、受信されるメールには全く反映されません。 php.iniやサーバの設定に何か問題があるのか調べたのですが、 自力では無理のようです。 どうか、お知恵をかして下さい。 よろしくお願い致します。
- ベストアンサー
- PHP
- ループでmail関数について
XREAなどレンタルサーバーではメール送信(mail関数)をループ処理を行い複数のアドレスに送信でき受信確認ができるのですが、実験を行っている自宅サーバでは送信はできているみたいなのですが一部アドレスだけ届きません。 どうしてでしょうか? ご参考までに、環境と状況を記載させていただきます。 CentOS5 sendmail PHP 4.4.6 ドメインは、ダイナミックDNSのdip.jpを利用しております。 届いているアドレスはgmailだけです。 YahooやOCN、auには届きません。 mb_send_mailでも現状は同じでした。 よろしくお願いします。
- ベストアンサー
- PHP
- phpからメールを送信したいです。
phpからメールを送信したいです。 やりたい事はそれだけですが、根本的によく分かっていないところがあり、その辺りを整理したいと思っています。 何分、概念をよく理解していないので、意味不明な事を書くかもしれませんが宜しくお願い致します。 CentOS7にアパッチとPHPをインストールしました。 WEBルート上に下記のtest_phpinfo.phpを配置し、 ブラウザから http://IPアドレス/test_phpinfo.php で呼び出すと、 phpinfoの情報が画面上に出ています。 次に、 WEBルート上に下記のtest_mb_send_mail.phpを配置し、 ブラウザから http://IPアドレス/test_mb_send_mail.php で呼び出すと、 (画面に出すものは何も書いていないので)真っ白な画面が出て、自分のアドレスにメールが届いて欲しいのですが届きません。 あと、具体的に何が必要なのかという事が分かりたいのですが、それとは別に幾つか質問があります。 phpのmb_send_mail関数自体にはメーラの機能はあるのですか?ないのですか? phpのエンジンと追加モジュールでメーラの機能があり、その設定が必要なのか? phpのmb_send_mail関数自体にはメーラの機能はなく、postfixなどのメールサーバーを仲介するだけなのか? メール送信に必要なのは何ですか? 普通にPCからメールを送る場合は、 サンダーバードとかOutlookといったメーラと、自分のメールアドレスが必要です。 自分のメールアドレスの情報として メールアドレス、パスワード、 IMAPかPOPサーバー名、ポート番号 接続の保護、認証方式 SMTPサーバー名、ポート番号 接続の保護、認証方式 が必要です。 phpのmb_send_mail関数からメールを送信する場合も同様にこれらが必要ですか? このサーバーでメールを管理したいわけではなく、ただメールを送りたいだけです。 それでもメーラのようなモノではなく、メールサーバーが必要ですか? 以上、宜しくお願い致します。 [test_phpinfo.php] <?php phpinfo(); ?> [test_phpinfo.php] [test_mb_send_mail.php] <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_send_mail("自分のアドレス", "件名", "本文", "From: from@example.com") ?> [test_mb_send_mail.php]
- ベストアンサー
- PHP
- PHPでmb_send_mail()関数を使っときの件名について
PHPでmb_send_mail()関数を使っときの件名について mb_send_mail()でメールの送信はできるのですが、件名(Subject)を日本語にすると8文字以上送信すると送信エラーが起こります。同じプログラムをLinuxでやるとうまくいきます。プログラムは以下のようにしています。(mail()関数を使うとこのような問題は起こりませんでした。) mb_language('Japanese'); $subject='メールテスト'; $subject=mb_convert_encoding($subject,'ISO-2022-JP','UTF-8'); $message='Webメールのテストです。'; $message=mb_convert_encoding($message,'ISO-2022-JP','UTF-8'); $head='私から送信されました。<****@****.net>'; $head=mb_convert_encoding($head, 'ISO-2022-JP', 'UTF-8'); $head=mb_encode_mimeHeader($head,'ISO-2022-JP','B'); if(mb_send_mail('****@****.com',$subject,$message,'From:'.$head)){ echo 'おくったよ。<br>'; } else{ echo 'おくれない。'; } 件名の全角での文字数を増やす方法があったら教えてください。 よろしくお願いいたします。 <システム環境> Windows7(64Bit) Apache2.2 PHP5.3.2
- ベストアンサー
- 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
- メール送信フォーム
mb_send_mail($to, $subject, $message, $from); でフォームのメール送信を作ったのですが、(エラーはでません)メールが送信されません。PHPのバージョンは4.23 HTMLでは <FORM METHOD="POST" ACTION="send.php" ENCTYPE="text/plain"> <input type="hidden" name="subject" value="質問"> </FORM> 省略 send.phpでは <?php mb_language("ja"); mb_send_mail($mail, $subject, $message, $from); ?> どこがおかしいのかわかりません? なにかヒントをいただけますか?
- 締切済み
- PHP
- mb_send_mail 文字化け iPhone
お世話になっております。 標題の通り、mb_send_mail でメールを送信したいのですが、iPhonoの純正メーラーで差出人名が文字化けしてしまいます。 thunderbirdやブラウザのWebメール・Androidのメーラーでは問題なく日本語で表示されています。 PHPファイルは、UTF-8です。 ざっくりですが、以下のソースで実装しています。 $mail = "hogehoge@gmail.com"; $sub = "日本語のタイトル"; $body = "日本語の本文"; $head = "From:日本語の差出人名 <info@hoge.hoge>\n"; mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_send_mail($mail, $sub, $body,$head); iPhoneでも、差出人名以外の、タイトルや本文は文字化けしていません。 ネットで調べ、症状は少し違うのですが、mb_encode_mimeheader関数を使ってみたりしたのですが、症状は変わりませんでした。 iPhone側の設定の問題なのか、php側の問題なのか良く分かりませんでした。 どうぞ、よろしくお願い致します。
- ベストアンサー
- PHP
- phpを使ってpostfixから送信したメールが迷惑メール扱いになってしまいます。
サーバーOSはinuxのfedora core 6、メールサーバはpostfixを使っています。phpのmb_send_mail関数でメールの送信自体はできるのですが、自宅のPC(windowsvista,メーラーはwindowsメール)から受信した際に迷惑メールフォルダに振り分けられてしまいます。メール送信のphpファイルには「宛先、題名、本文」を変数に格納してmb_send_mail関数で実行するだけです。この他にphp上で追加の記述が何か必要なのでしょうか?見当もつかない状態ですので誰かお分かりになる方がおりましたら教えてください。あとサーバーのほうはホスティングなので外部にあり、リモート操作です。
- ベストアンサー
- PHP
- PHP関数mb_send_mailで送信すると件名が文字化けしてしまいます。
PHP関数mb_send_mailでメールの送信しているのですが、件名だけが文字化けしてしまいます。 Windows2000Server+IIS ■PHPソース mb_send_mail($strMail,mb_convert_encoding("あいうえお","JIS","auto"),mb_convert_encoding("かきくけこ","JIS","auto"),$header); ■PHP.INI設定 extension=php_mbstring.dll SMTP = localhost smtp_port = 25 sendmail_from = sample@sample.jp mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; ■文字化けするSubject Subject: =?US-ASCII?B?GyRCJCIkJCQmJCgkKhsoQg==?= このPHPソースを別のレンタルサーバにいれ、送信すると文字化けせずに届きます。 なぜか、受信メールの文字コードがUS-ASCIIになっています。どうすればいいのでしょう? 誰かたすけてくださいーー
- ベストアンサー
- ハードウェア・サーバー