• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpからメールを送信したいです。)

【解説】PHPからメール送信する方法と必要な設定

t_ohtaの回答

  • t_ohta
  • ベストアンサー率38% (5067/13241)
回答No.2

> phpのmb_send_mail関数自体にはメーラの機能はあるのですか?ないのですか? 一般的なPCのメーラーのような機能が全てある訳では有りません(そもそも送信するだけで受信はしませんし) mb_send_mail関数は、引数で受け取ったデータを元にRFCの規定に準じたメールデータフォーマット型式のデータを生成し、指定されたSMTPサーバへSMTPプロトコルでメールを送信する機能を持つモノです。(PCメーラーの送信側の機能と基本は同じ) > メール送信に必要なのは何ですか? php.ini と言うPHPの環境設定ファイルに ・SMTPサーバー名 ・ポート番号 を指定する項目があるので、こちらを設定する事になります。 デフォルトはサーバ名が「localhost」で、ポート番号が「25」になっています。 外部のSMTPサーバを利用する際に認証が必要であれば、認証用のユーザ名とパスワードも設定できます。 パスワードを設定する場合は、第三者に見られないようファイルのパーミッションに注意が必要です。 > それでもメーラのようなモノではなく、メールサーバーが必要ですか? Webサーバ上でSMTPサーバを動作させる必要はありません。 しかし、LinuxだとデフォルトでSMTPサーバは動いている場合が多いので、そのまま使う事も多いかと思います。 サーバの設置環境が判らないので何とも言えませんが、データセンターもしくはIaaS事業者がSMTPサーバを用意してくれていて、利用可能なのであればそちらを使っても問題ありません。

linuxorfe
質問者

お礼

返信ありがとうございます。 >一般的なPCのメーラーのような機能が全てある訳では有りません(そもそも送信するだけで受信はしませんし) では、送信だけは自力でできるのですか? postfixのようなものは必要ないと考えて宜しいですか? 一旦、yum でpostfixをインストールしましたが、これはアンインストールしても問題ないのですよね? >外部のSMTPサーバを利用する際に認証が必要であれば、認証用のユーザ名とパスワードも設定できます。 さくらインターネットでレンタルサーバ スタンダードを契約しており、 そこに、 info@独自ドメイン、mail1@独自ドメインなどのメールアドレスを作っています。 一方、メール送信を試そうとしているサーバーはローカルにあります。 パソコンにCentOS7をインストールして、アパッチとphpを入れただけの状態です。 CentOS7はGUIを使ってパソコンとしても使えますので、 仮にサンダーバードをインストールすれば、 mail1@独自ドメインのアドレスとパスワード、 IMAPサーバー名、ポート番号 接続の保護、認証方式 SMTPサーバー名、ポート番号 接続の保護、認証方式 を指定すれば、サンダーバードからメールは送る事ができます。 サンダーバードの設定と同じようにphpの設定で ・SMTPサーバー名 ・ポート番号 を設定すればphpからメールは送信できるのでしょうか? また、サンダーバードでは、yahooのメールも受信できます。 ・SMTPサーバー名 smtp.mail.yahoo.co.jp ・ポート番号 465 これを設定しても送信できますか? >Webサーバ上でSMTPサーバを動作させる必要はありません。 つまり、postfixのようなものはインストールしている必要はないのですよね? この部分、概念の理解としては一番確認したい部分です。 以上、宜しくお願い致します。

関連するQ&A

  • 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』でそのままメール送信すると、受信者側のメーラーの差出人名にメールアドレスしか表示されません。 ここに、こちら側の任意の文字が表示出来るようにするには、どうすれば良いのでしょうか?

    • ベストアンサー
    • PHP
  • phpからのメール送信

    サーバにはpostfix/phpがインストールされており mb_send_mail関数を使ってメールを送信しております。 example.comというドメインを例として説明すると fromがtest@example.comというメールアドレスでは問題なく送ることができるのですが、 ドメインをexample.com→mail.example.comと変更し、test@mail.example.comというアドレスで送ろうとすると maillog上はtest@mail.example.comから送っていることになっているのですが、 メーラーで受信するとformがtest@example.comになっております。 サブドメインのmail.example.comから送るようにするにはどのようにしたらよろしいでしょうか? main.cf virtual_alias_domains=example.com mail.example.com virtual_alias_maps = hash:/etc/mail/virtual /etc/mail/virtual test@example.com test test@mail.example.com test

  • 現在趣味で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
  • ローカル環境でのメール送信ができない

    ここでお願いします。 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 メール送信ができない

    いつもお世話になっております。 最終的にやりたいことは、営業マンの受注一覧をPDF作成し そのPDFを営業マンにメールで送信する(添付ファイル)ということですが。 (PDF作成まではできております) これには、 とても道のりが遠そうです。 まずはじめに 普通に PHPから メールが送信できるか 試してみました。 <?php if (mb_send_mail("自分のアドレス", "TEST MAIL", "This is a test message.", "From: 自分のアドレス")) { echo "メールが送信されました。"; } else { echo "メールの送信に失敗しました。"; } ?> 文字化けの対策等もしなければいけないと思いますが とりあえず これで メールが届くかと思い やってみました。 結果は 「メールが送信されました。」と表示されておりますが 実際には 送られておりません。 いろいろと検索してみましたが これから どうすればいいのかが わかりません。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • CentOS7×apache×php メールを送信

    CentOS7×apache×php×外部smtpからメールを送信したいです。 しかし、上手く行きません。 【環境】 LAN内のPCにCentOS7をインストールし、apacheとphpをインストールしました。 それ以外のものpostfixなどは入っていないとします。 クライアントPCはWindows10です。 phpの動作確認は、Windows10のPCからブラウザでphpinfo()が見れるところまでできています。 【目標】 下記のphpをブラウザで参照すると、「メール送信に成功致しました。」が出て、メールが届くようにする。 [test_mb_send_mail.php] <?php $sTo = 'adr@yahoo.co.jp'; $sFromMail = 'adr@独自ドメイン.jp'; $sSubject = '件名:メール送信テスト'; $sHeaders = "From: {$sFromMail}\r\n"; $sMessage = '本文:テスト'; //送信処理 mb_language("Japanese"); mb_internal_encoding("UTF-8"); if(mb_send_mail($sTo, $sSubject, $sMessage, $sHeaders)){ echo 'メール送信に成功致しました。<br/>'; }else{ echo 'メール送信に失敗致しました。<br/>'; } ?> [test_mb_send_mail.php] 【メールアドレス】 メールアドレスは2つ用意しています。 adr@yahoo.co.jp ・・・ yahooで作ったメール。thunderbirdメーラで普段使っています。 adr@独自ドメイン.jp ・・・ 契約しているさくらインターネットで作ったメール。thunderbirdメーラで普段使っています。 どちらを受け側、送り側にしても構いませんが、とりあえず、adr@yahoo.co.jpを送り側にします。 【thunderbirdメーラに登録しているsmtpの情報】 smtp.mail.yahoo.co.jp 465 adr@yahoo.co.jp 通常のパスワード認証 SSL/TLS mail.独自ドメイン.jp 587 adr@独自ドメイン.jp 通常のパスワード認証 STARTTLS 【/etc/php.iniの変更箇所】 [mail function] ; For Win32 only. ; http://php.net/smtp SMTP = localhost ; http://php.net/smtp-port smtp_port = 25 ; For Win32 only. ; http://php.net/sendmail-from ;sendmail_from = me@example.com  ↓ ↓ ↓ [mail function] ; For Win32 only. ; http://php.net/smtp SMTP = smtp.mail.yahoo.co.jp ; http://php.net/smtp-port smtp_port = 465 username = adr@yahoo.co.jp password = パスワード ; For Win32 only. ; http://php.net/sendmail-from sendmail_from = adr@yahoo.co.jp 【状況】 「メール送信に失敗致しました。」という自分で設定したメッセージが出ます。 具体的に何がいけないのか? 何かを確認しないといけないなら、具体的に何を確認したらよいのか知りたいです。 以上、宜しくお願い致します。

    • ベストアンサー
    • 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関数をつかってメール送信をしたいのです が、上手くいきません。 エラーメッセージは Warning: mb_send_mail() [function.mb-send-mail]: SMTP server response: 530 5.7.0 Must issue a STARTTLS command first n44sm11126503pyh in C:\xampp\htdocs\○○○\○○.php on line 15 とでています。 文字コードはUTF-8で保存しており、 <?php mb_language("ja"); mb_internal_encoding("UTF-8"); $mailto="○○○@○○○.jp"; $subject="タイトル"; $content="内容"; $mailfrom="From:".mb_encode_mimeheader("nicoko")."<○○○@フリーメールアドレス.com>"; mb_send_mail($mailto,$subject,$content,$mailfrom); ?> です。 15行目はmb_send_mail($mailto,$subject,$content,$mailfrom); 色々調べたところ、 (1)SMTP = メールアドレス用のsmtpサーバの設定 (2)smtp_port = 25 (3)sendmail_from = メールアドレス を設定しなおし、 C:\xampp\apache\bin\php.ini C:\xampp\php\php.ini C:\xampp\php\php5.ini C:\xampp\php\php4\php.ini 全ての設定を変更しました。 またphpinfoで確認したところ(1)~(3)まで変更されていました。 (3)はOutlookのメールのアカウント→プロパティを見て サーバー情報→送信メールに○○.○○○.jpと書いてあり、 それをうつしました。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHP mb_send_mail メール送信 550エラー

    PHP mb_send_mail メール送信 550エラー お世話になります。 PHPにてmb_send_mail関数を使い、メール送信を行っているのですが・・・ 特定の送信先に対して以下のメールが帰ってきます。 ※相手先メールアドレスは伏せております。 件名:Returned mail: see transcript for details The original message was received at Mon, 29 Mar 2010 18:14:56 +0900 (JST) from localhost [127.0.0.1] ----- The following addresses had permanent fatal errors ----- <***@***.***> (reason: 550 Host unknown) ----- Transcript of session follows ----- 550 5.1.2 <***@***.***>... Host unknown (Name server: ***.***.: host not found) 送信先のメールアドレス自体は存在しておりますが、mb_send_mailを使っての送信が失敗します。 また、全てのアドレスで上記のエラーが発生するというわけではないようです。 これを正常に送信させるにはどのようにすればよろしいでしょうか・・? ご回答よろしくお願いいたします。

    • ベストアンサー
    • PHP