質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Sendmail

Sendmailは、インターネットで電子メールを送受信するサーバソフトウェア(MTA)です。ユーザーが送信したメールを受け、他メールサーバへ引き渡しバケツリレー式に配送したり、届いたメールをユーザーが受け取るまでの間保管するといった働きをします。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

SMTP

SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

5409閲覧

PHPでSMTPリレー(Gmail)でメール送信したい

退会済みユーザー

退会済みユーザー

総合スコア0

Sendmail

Sendmailは、インターネットで電子メールを送受信するサーバソフトウェア(MTA)です。ユーザーが送信したメールを受け、他メールサーバへ引き渡しバケツリレー式に配送したり、届いたメールをユーザーが受け取るまでの間保管するといった働きをします。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

SMTP

SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

1クリップ

投稿2020/12/01 08:44

以下、お願い致します。

条件:
エックスサーバー

実現したいこと:
PHPから、SMTPリレーでメール送信が目的です。
SMTPはGmailになります。
※現在は、mb_send_mail関数でメール送信が可能です。

すでに実行済み:
Googleの設定でSMTPリレーを有効。
許可する送信者→ドメイン内のアドレス
認証→SMTP認証を求める
TLS暗号化を必須とする→いいえ

その他、なにをどう作業してよいか分かりません。
試しに現在のPHPファイルを以下のように修正&追加しましたが案の定エラーがでました。

PHP

1 $smtp = Mail::factory('smtp', 2 array ('host' => smtp.gmail.com, 3 'port' => 587, 4 'auth' => true, 5 'username' => "admin@hoge", 6 'password' => "pass")); 7 8 $result = $smtp->send($TOEMAIL, $MAILTITLE, $message, $header);
Fatal error: Uncaught Error: Class 'Mail' not found in

質問内容:
SMTPリレー(Gmail)でメール送信するのは、
どのようにコードを書き直したら良いのでしょうか?
また、その他に設定を変える箇所はありますか?

php.iniの[mail function]を変える必要があるのでしょうか?
変える場合には、どのように設定すればよろしいでしょうか?

何卒よろしくお願い致します。

その他疑問点:
「クライアントをTLS経由で接続する必要があります」とGoogleのサイトで見ましたが、
その意味や必要性が分かりません。
また以下の文もGoogleで見ましがよく、
その意味や必要性が分かりません。

「Sendmail のスマートホストを設定するには:
/etc/mail/sendmail.mc ファイルに次の行を追加します。
define(SMART_HOST', smtp-relay.gmail.com')​​」

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

mb_send_mail()で正しくメールを送信するのは割と大変なので
PHPMailer
等の定番のライブラリを使用されることをお勧めします(おそらく、ソースのMailも何らかのライブラリを使ったコードのコピペだと思いますが、ライブラリの使い方を理解しない事にはエラーメッセージの通り「クラスが存在しない」となります)

PHPMailer 使い方とかPHPMailer gmail PHPMailer gmail smtpあたりをキーワードにして調べてみて試してみてください。

投稿2020/12/01 08:52

tanat

総合スコア18713

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/12/01 09:07

ありがとうございます。「PHPに標準で用意されている関数には、SMTP認証してメールを送るというような機能はありません。」という一文をあるサイトで見ました。そうなんですね! おかげさまで前に進めそうです。アドバイスありがとうございました!!
miyabi_takatsuk

2020/12/01 11:48

質問者さん、解決したなら、BA選出して、質問を閉じましょう。、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問