• ベストアンサー

PHPでメールの送信(Gmail使用)

いつもお世話になっております。 今回はサイト利用者が管理者などに質問をメールするホームを作っております。 利用者は名前、メールアドレス、質問内容を入力し、送信ボタンを押すと、自動的に管理者のメールアドレスに送信される。そういった流れです。 プログラムそのものにはミスはないのですが、ひとつ問題があります。 質問メールをgoogleのGmailに送信できるようにしているのですが、Gmailをメールサーバーにする設定がよく分かりません。 いろいろサイトを調べて「php.ini」内にある SMTP=localhostをsmtp.gmail.comに変更したのですが、メールを送信するとウイルス対策ソフトMcAfeeが出てきて 「プロトコルエラーのためメールが送信されませんでした」と出てしまいます。 どうすればgmailにちゃんと送信されるのでしょうか? 解決しなければいけない問題は3つだと思います。 1,Gmailの設定方法。 2,メールソフト(outlook,thunderbirdなど)の設定方法(現在この二つのメールソフトを使用しています)。 3、php.iniの設定 特に下記の部分。 [mail function] ; For Win32 only. SMTP = smtp... smtp_port = 25 ; For Win32 only. sendmail_from = :::::@example.jp もしお分かりになる方がいらっしゃいましたら、もしくは参考になるサイトをご存知の方がいらっしゃいましたらよろしくお願いします。

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

  • ベストアンサー
回答No.3

環境を推測します。 ・自宅設置のWindowsをWebサーバーとして使っている ・そのWebサーバーにメール送信のPHPを設置している ・そのメールの送り先はgmail.comの特定アカウントに固定 この場合、php.iniでは、gmail.comのSMTPサーバーを使うのではなく、 その回線で使うべきSMTPサーバー(自宅設置ならプロバイダのSMTPサーバー)を指定します。 メールの送り先(Toアドレス)に合わせて、いちいちPHPが使うSMTPサーバーを切り替える必要はありません。 もし、自分のプロバイダのSMTPサーバーを使えない理由があり、どうしてもsmtp.gmail.comをSMTPとして使いたいというのなら、すでにご回答のある通り、mail()やmb_send_mail()でなくPEAR::Mailなどを使って SSL+SMTP-AUTHで送るようする必要があります。 しかし、smtp.gmail.comを使ってメール送信するとFromアドレスを強制的にその認証アカウントのものに書き換えるので(SPAM踏み台防止のため)、 どちらにせよ、PHPでのメール送信で使うのには不向きです。

gsrbrk
質問者

お礼

お礼が遅くなってしまって大変申し訳ございません。 superside0さんのご指摘どおり、自分の使っているプロバイダーのSMTPを使ったらできました。 プロバイダーにSMTPについてメールで質問したのですが海外(オーストラリア)の業者はどこも、仕事が遅く、やっと先週SMTPについて教えてもらったもので、お礼が遅くなっていまった次第です。本当にありがとうございました。

その他の回答 (2)

  • x415f484f
  • ベストアンサー率71% (57/80)
回答No.2

> 1,Gmailの設定方法。 > 2,メールソフト 1, をご覧になって 2, のメールソフトでは送信が出来ているのですよね? 1, の設定方法について何か疑問はありませんでしたか? (ほかのメール設定異って SSL だったとか、ポートの番号が 違っていたとか) > 「プロトコルエラーのためメールが送信されませんでした」 はい、そうなります、理由は後述します。 > 3、php.iniの設定 > 特に下記の部分。 (以下割愛) Gmail は SSL 接続して SMTP-AUTH (認証)が必要なのでそのような 方法では送れません。 ご自身のお使いのプロバイダの SMTP(メール送信サーバ)を使うか、 別の方法(PEAR::Mailなど)を使って送ります。 # 別途 PEAR::Mail などのパッケージが必要なのです。 # コマンドプロンプトを使って php のディレクトリの go-pear.bat を # 使ってインストールします。 gmail PEAR::Mail - Google 検索 http://www.google.co.jp/search?q=gmail+PEAR%3A%3AMail # 他にご質問がある時は急いで締め切らないで頂けると助かります。

gsrbrk
質問者

お礼

x415f484fさん ご解答ありがとうございます。まだご解答していただいたのはためしてはいないのですが、前回の質問の際に大変失礼なことをしてしまったのでまずそちらのお詫びをしたいと思い書き込みました。本当に前回の質問では大変申し訳ございませんでした。確かにまだ質問を書いたまま質問を締め切ってしまいました。こちらの方も解決はしていないのですが、まずメール送信・STMPサーバーの問題が解決しないとなにも始まらないので、今回の質問をさせていただいております。 GmailだけでなくほかのSMTP(プロバイダのなど)いろいろもっと調べてみます。PEAR::Mailなどについてもよく読ませていただきます。 前回の質問で失礼なことをしたにも関らずまたご解答していただきありがとうございました。まずはご解答していただいたことをためしてみてまた、質問があれば補足のところに書き込みますのでよろしくお願いいたします。

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.1

そのサーバの動作環境はどういうのですか? 貴方のパソコンで動かしているなら、ウイルス検査サービスを停止する必要があります。

gsrbrk
質問者

補足

ご解答ありがとうございます。ご指摘の通り、ウイルス検査を停止したのですが実行したら というエラーが出てしまいました。 SMTP server response: 530 5.7.0 Must issue a STARTTLS command first. c20sm18273232rvf.3 ウイルス検査を通さないとこういったエラーが出てしまうのでしょうか? 動作環境ですが、 OS windows xp Xampp 2.5 PHP 5.25 thunderbird 2.0.0.12 です。

関連するQ&A