PHPでメール送信する際、SMTPを利用するメリットについて教えてください

このQ&Aのポイント
  • PHPでメール送信する際、SMTPを利用するメリットについて教えてください。ログイン認証でメールを送信したいのですが、SMTPを利用した方がよいか、判断がつきません。
  • SMTPを利用するメリットとデメリットを教えてください。例えば、http://www.sapphirus.biz/php/sformmail2/ http://www.sapphirus.biz/php/sformmail2s/ では、SMTPの方は「認証」が必要なので、それだけ大変そうなのですが。
  • SMTPを利用しない場合は、何方式と呼ぶのでしょうか? WEBメール方式?環境はレンタルサーバで、現状はSMTPを利用せずにメールが送れるが、どういう仕組みで届くか理解できていないです。
回答を見る
  • ベストアンサー

PHPでメール送信する際、SMTPを利用するメリッ

PHPでメール送信する際、SMTPを利用するメリットについて教えてください。 ログイン認証でメールを送信したいのですが、 SMTPを利用した方がよいか、判断がつきません。 例えば、 http://www.sapphirus.biz/php/sformmail2/ http://www.sapphirus.biz/php/sformmail2s/ では、SMTPの方は「認証」が必要なので、 それだけ大変そうなのですが、 SMTPを利用する、しない場合の、 「メリット」「デメリット」を教えてください。 また、SMTPを利用しないやり方(メールアドレスを書いてmail関数を利用)は、 何方式と呼ぶのでしょうか? WEBメール方式? 環境) レンタルサーバ 現状) SMTPを利用せずにメールは送れるのですが、    どういう仕組みで届くか理解できてません

  • re999
  • お礼率61% (476/777)
  • PHP
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • shigenobi
  • ベストアンサー率43% (19/44)
回答No.3

前に回答した者です。 > そうすると、PHPというかメールの仕組み自体の話で恐縮なのですが、 「何も認証しないで送る方法」というのは、 いきなり、SMTPでメールを送りつけて、 そのメールアドレスからメールサーバ(?)を割り出して、 もし、アドレスが違っても、エラーは返ってこない、 みたいな流れになるのでしょうか? ほぼほぼその通りです。 認証なしに、@以降のドメインに向けてメールを送りつけます。 ちなみに認証する方法をとっても、自分が発出するメールサーバーに対しての認証です。 エラーがあった場合は、発出したメールサーバーに対してエラーが返ってくるといった感じです。 でも発出するメールサーバーも本来のメールサーバーアドレスでない定義ができるはずなので、その場合はネットの藻屑となります。(戻り先がないので)

re999
質問者

お礼

回答ありがとうございました。 大変参考になりましたー

その他の回答 (2)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

mailを使った場合には、一般的なレンタルサーバであればsendmailコマンドでの送信が実行されます。一方、SMTP認証を使うケースでは他のSMTPサーバへも接続可能です。お使いのプロバイダのSMTPサーバが(そのプロバイダの)ネットワーク外からの接続を許可していれば、そちらのサーバから送信することが出来ます。 共有のレンタルサーバの場合、サーバーのIPアドレスがspamデータベースに登録されてしまっていることがあり(昨日までOKでも、いつ登録されてしまうかわからない)不達を避けるために自分が契約しているプロバイダのSMTPサーバを使うことがあります。 phpだとSMTPを使うライブラリも多いので、そういうライブラリを使えば如何でしょうか? ・http://www.google.co.jp/search?q=php%20SMTP&hl=ja

re999
質問者

補足

回答ありがとうございます。 >一般的なレンタルサーバであればsendmailコマンドでの送信が実行されます。 これは、自分が借りているレンタルサーバのメールサーバを利用して、メール送信する、という意味でしょうか? >一方、SMTP認証を使うケースでは他のSMTPサーバへも接続可能です。お使いのプロバイダのSMTPサーバが(そのプロバイダの)ネットワーク外からの接続を許可していれば、そちらのサーバから送信することが出来ます。 これは、メール発信先が、メールアドレスから割り出したメールサーバになる、という意味なのでしょうか? ここで言う「他のSMTPサーバ」とは、何を指しているのでしょうか?

  • shigenobi
  • ベストアンサー率43% (19/44)
回答No.1

こんばんは 何か少し勘違いをされているようです。 メールを送信する時に使うプロトコルはすべて、 SMTP(Simple Mail Transfer Protocol)を利用しますので、 SMTPを利用しないメール送信方法はありません。 上記にあげている2つの方法の違いですが、 送る前に正しいアカウントからの接続かどうかを確認する方法と、 その確認をしないで送る方法かどうかです。 SMTP版を利用するメリットとしては、正規のアカウントからの送信要求で ない場合、送信できなくできる(認証ではじく)というものです。 デメリットはそれを防げない、ということとなります。 SMTP版の方の通称は、認証方式の1つで「SMTP認証」といいますが、 (http://e-words.jp/w/SMTP20Authentication.html) 何も認証しないで送る方法は、特に送信方法として名前があるようには 認識していません。

re999
質問者

補足

回答ありがとうございます。 >SMTPを利用しないメール送信方法はありません そうすると、PHPというかメールの仕組み自体の話で恐縮なのですが、 「何も認証しないで送る方法」というのは、 いきなり、SMTPでメールを送りつけて、 そのメールアドレスからメールサーバ(?)を割り出して、 もし、アドレスが違っても、エラーは返ってこない、 みたいな流れになるのでしょうか?

関連するQ&A

  • 外部smtpサーバーを利用したメールの送信方法

    お世話になります。 環境ですが、Linux(CentOs3.6)/php4.2.9、を使っています。 phpで、外部smtpサーバーを利用したメールの送信方法を調べています。 実現したい事は、 メインサーバーから、外部smtpサーバーAと外部smtpサーバーBを利用してメールを送信させたいと思っています。 方法をご存知の方がいらっしゃいましたらご教授下さい。

    • ベストアンサー
    • PHP
  • smtpでのメール送信?

    最近レンタルするようになったサーバーがsendmailがつかえないと知りました。 smtpでもメール送信のスクリプトを組める様ですが、簡単なサンプルをご存知の方教えていただけないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 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からメールを送信したいです。

    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
  • sendmailでホットメールのSMTP送信

    今年からホットメールでのSMTP POP3での送受信が可能になったということで 「eWEB」さんのメールフォームを使用し自宅サーバから送信をしようと思っています。(下記のURLのフォームを使用) http://php.eweb-design.com/1301_mail.html 現在XAMPPで鯖を構築しているのですがホットメールのでSMTPを利用した送信ができません。 C:\xampp\sendmail\sendmail.iniを smtp_server=smtp.live.com smtp_port=587 auth_username=account@hotmail.com auth_password=password C:\xampp\apache\bin\php.iniを SMTP = smtp.live.com smtp_port = 587 のように書き換え「eWEB」さんのフォームを使用したのですが送信ができないようです。 sendmailを利用してホットメールのSMTP送信は何か足りないものがあるのでしょうか? 説明が長くなってしまいましたが、もしお分かりになる方がいましたら宜しくお願いいたします。

    • 締切済み
    • PHP
  • ■どちらでメールを送信したほうがいいのでしょうか?

    ■どちらでメールを送信したほうがいいのでしょうか? メールの送信のことで質問があります。 HP開設のためにドメインを持っている(レンタルサーバを借りています)ので、ドメインメールを持っています。 このドメインメールを送信する方法は、下記の2つがあります。 (1)レンタルサーバから与えられた送信サーバ情報を設定して送信。 (2)プロバイダー(レンタルサーバとは全く関係ありません)から与えられた送信サーバ情報を設定して送信。 認証の設定さえ変えれば、(1)(2)どちらでも送信することが可能です。 ※方式としては、どちらもsmtpです。 どちらで送信したほうがいいのでしょうか? 送信できるならどちらでもいいようにも思うし今までは(2)で送信していたのですが、ドメインメールなんだからやっぱり(1)にすべきなのかなとか思い迷っています。 初歩的なことだとは思いますが、助言いただければ嬉しく思います。

  • SMTP.phpについて

    openPNEでメール送信をやらせようとしたところ、 Warning: Mail_smtp::include_once(Net/SMTP.php) [function.Mail-smtp-include-once]: failed to open stream: No such file or directory in [openPNEディレクトリ]lib\include\Mail\smtp.php on line 207 というメッセージが表示されました。 調べてみたところ、PHPディレクトリ以下に当該ファイル(Net/SMTP.php)が存在しません。 どうやら追加しなければいけないようですが、入手先などが不明で困っております。 環境は、Windows2000Pro上でのPHP5.2.1です。 何卒よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • php メールフォーム SMTP メールサーバー

     環境は、 windows7 32bit・ XAMPP version1.8.1(Apache MySQL) です。. phpを、 「PHP プログラミングの教科書」 にて、勉強中のものですが、『3-2 メールフォーム』のメールサーバーの設定で、つまってしまいました。  外部メールサーバーを、SMTPに指定して、メールを受け取るプログラムです。   外部サーバーに、 Yahoo(またはGmail ) を利用しようとして、つまっています。 「PHP プログラミングの教科書」の説明では、PHP設定ファイル(php.ini)のメール設定で、 デフォルトで、 --------------------------- SMTP = localhost smtp_port = 25 --------------------------- の部分を、 ↓ --------------------------- SMTP = xxxxx.xxxxx.com(メールサーバー) smtp_port = 25 username = xxxxx password = xxxxx --------------------------- と、変更・追加すれば、よいとのことで、 SMTP = smtp.mail.yahoo.co.jp smtp_port = 25 username = yahooのID password = yahooのパスワード と設定しました。 phpのファイルにアクセスすると、文字の入力から、送信までのページ進行には、問題ないのですが、メールが受信(または送信)されません。メール送信は、mb_send_mail関数を使用してます。ヤフーデリバーというものに、登録して、ヤフーのサーバーの情報などを確認しました。 メールソフト(outlook,thunderbirdなど)は、必要なのでしょうか?書籍にはなんの記述もないので、できるのかとおもってるのですが、ネットで調べると、Gmailと、メールソフトと、PEAR:Mailで、メールを送信する。という記述が多いのですが、基本的なことを把握してないと思いますので、ご指摘いただけたらと思います。よろしくお願いいたします。ヤフー 以下、phpのコードです。 <?php //サニタイズ関数の定義 function hsc($a){ return htmlspecialchars($a, ENT_QUOTES ,"UTF-8"); } $uname = hsc($_SESSION["uname"]); $email =hsc($_SESSION["email"]); $message =hsc($_SESSION["message"]); // メール本文の組み立て $to = "yahooの自分のアドレス"; $title ="【メールフォームより】"; $ext_header ="From : {$email}"; //本文を組み立てるヒヤドキュメント $body = <<<EOM --------------------------------------------------------------------- 【webサイトからのメール】 お名前:{$uname} メールアドレス:{$email} メッセージ:{$message} --------------------------------------------------------------------- EOM; //メール送信の実行 $rc = mb_send_mail($to, $title, $body, $ext_header); if(!$rc){ exit; }else{ $_SESSION = NULL; } ?> 試したことは、 ・ポート番号を、587に変更する。 ・php.iniのSMTPなどの前に、「;」があったので、それを削除した。

    • ベストアンサー
    • PHP
  • ぷららメール送信できません

    【ぷらら(メール )】 【メール送信ができなくなりました。受信はできます。送信認証方式の変更で、マニュアルに従って設定変更しました。送信時に「送信サーバーsecure.plala.or.jpに接続できなかったたメッセージ送信できませんでした。サーバー利用できないか、SMTP接続が拒否された可能性があります。送信(SMTP)サーバーの設定が正しいか確認し再度試してください」と出ます。 設定は、SMTP/ホスト:secure.plala.or.jp/ポート番号995/(SSL/TLS)/認証方式:通常のパスワード認証 にしています。 メールアドレス・ユーザー名は、自分のメールアドレスにしています。】 【Windows11 メールソフトはthunderbird115.2.2】 早急に送らないといけないメールがあり、困っています。 電話をしても自動音声で、マニュアルで設定してくださいとメールが届くだけです。 ご教授お願いいたします。 ※OKWAVEより補足:「※OKWAVEより補足:「ISPぷらら」についての質問です。」についての質問です。

  • PHPで外部SMTPサーバーを利用したメールの送信方法

    PHPで外部SMTPサーバーを利用したメールの送信方法を調べています。 過去の事例からPEARを使用すれば良いことが分かりPEARをインストールしたのですが、 実行すると「$smtp = Mail::factory("smtp", $params);」の所で、 「Fatal error: Class 'Mail' not found in C:\Inetpub\wwwroot\Mail.php on line 14」と なってしまいます。 PEARのインストール後はサーバーの再起動は行っております。 ※環境 OS:WindowsXP Pro SP3 WebServer:IIS PHP:Ver.5.2.6 ※PEARのインストール状態 C:\Documents and Settings\horie>C:\php\pear list PHP Warning: Module 'mbstring' already loaded in Unknown on line 0 INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET: ========================================= PACKAGE VERSION STATE Archive_Tar 1.3.2 stable Console_Getopt 1.2.3 stable PEAR 1.7.1 stable Structures_Graph 1.0.2 stable ※Mail.php <?php $params["host"] = "smtp.mail.yahoo.co.jp"; $params["auth"] = true; $params["username"] = "AAA-BBB"; $params["password"] = "9999"; $sender = "aaa**@yahoo.co.jp"; $recipient = "bbb**@yahoo.co.jp"; $subject = "TEST"; $subject = mb_convert_encoding($subject, "jis", "sjis"); $subject = mb_encode_mimeheader($subject, "jis"); $message = "テストメッセージ"; $message = mb_convert_encoding($message, "jis", "sjis"); require_once 'Mail.php'; $smtp = Mail::factory("smtp", $params); if (PEAR::isError($smtp)) die($smtp->getMessage()); $headers['From'] = $sender; $headers['Subject'] = $subject; $headers['MIME-Version'] = "1.0"; $headers['Content-Type'] = 'text/plain; charset="iso-2022-jp"'; $headers['Content-Transfer-Encoding'] = "8bit"; $headers['X-Mailer'] = "PHP PEAR/Mail(smtp)"; $error = $smtp->send($recipient, $headers, $message); if (PEAR::isError($error)) die($error->getMessage()); exit("メッセージを送信しました"); ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう