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

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

ただいまの
回答率

90.50%

  • WordPress

    7218questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • MAMP

    218questions

    Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Localhost の Wordpress で メール送信

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 430

imamura

score 123

Wordpressの自作プラグインの一部からメールを送信しようとしています。
しかし、ローカル環境からはメールが送信できません。

Mac Mamp Pro + Wordpress 4.9.6–ja

こちらのサイを参考にして、プラグインとGoogleCloudPlatformを利用しようとしました。

【OAuth認証】WP Mail SMTPでGmailを設定する方法
WP Mail SMTP by WPForms
GoogleCloudPlatform

設定は順調に進んだのですが、最後の Authorized redirect URI で躓いています。
エラーは次のように表示されています。

無効なリダイレクト: https://localhost-ssl(略)/wp-admin/options-general.php?page=wp-mail-smtp&tab=auth はパブリック トップレベル ドメイン(.com、.org など)で終わる必要があります

エラーの内容からするとlocalhostからは利用できないのかもしれません。
【回答より追記】 localhost は許可されているようですが、Mampでssl接続を実現するためlocalhost以外のホスト名にする必要があり、現在は localhost-ssl:8890 で接続をしています。

上記の方法にかかわらずLocalhostからメールを送信する方法がありましたら、教えて頂けますでしょうか。

よろしくおねがいします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+3

実際に外部にメールを送信する必要がないのであれば(メールアプリなどで確認した、Gmail でスパムフォルダに入らないか確認したいなど)、MailCatcher を使用するという手があります。

https://mailcatcher.me/

これは、Ruby の gem というパッケージ管理システムを使ってインストールします。
Mac ということなので、既に Ruby はインストール済みだと思いますので、Terminal.app を立ち上げれば直に MailCatcher をインストールできます。

 MailCatcher のインストール

以下のコマンドをターミナルに入力してみてください。
※ 先頭の $ は入力しなくてでください。コードを書く上でのルールみたいなものです

$ sudo gem install mailcatcher

暫く待つとインストールが完了します。完了したら次に MailCatcher を立ち上げます。

$ mailcatcher

実行すると

$ mailcatcher
Starting MailCatcher
==> smtp://127.0.0.1:1025
==> http://127.0.0.1:1080
*** MailCatcher runs as a daemon by default. Go to the web interface to quit.

こういう表示になると思います。これで、MailCatcher が起動しました。試しに http://127.0.0.1:1080 にアクセスしてみてください。何となくみたことある画面がでてきます。
MailCatcher を終了するには、http://127.0.0.1:1080 の右上にある [Quit] をクリックすると終了できます。

 catchmail コマンドのインストール先を確認

下記のコマンドをターミナルで実行します。

$ which catchmail

そうすると

$ which catchmail
/Users/example/.anyenv/envs/rbenv/shims/catchmail

みないな感じで、catchmail コマンドがある場所がでてくるので、これをメモします。MAMP の設定で使用します。

 MAMP の設定

MAMP を立ち上げて左側のメニューの PHP をクリックします。
一番上に、Default version と書かれたプルダウンメニューがあると思います。そのすぐ隣に、○ の中に → が書かれたアイコンがありますのでクリックします。
アイコンをクリックすると、php.ini がテキストエディターで立ち上がりますので、⌘ + f を押して検索バーを表示さ 「mail function」を検索します。すると以下のような箇所が見つかりますので、smtp_port と sendmail_path を書き変えます。

[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

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =

↑を↓に書き換えてください。

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 1025

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = me@example.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = '/usr/bin/env /Users/example/.anyenv/envs/rbenv/shims/catchmail -f imamura@wordpress.dev'


書き換えが終わったら、⌘ + s で上書き保存して、MAMP を再起動させます。/Users/example/.anyenv/envs/rbenv/shims/catchmail の部分は、$ which catchmail で調べたものと置き換えてください。

もし、PHP のバージョンを Host 毎に変更している場合は、Default version を Host で使用している PHP のバージョンにを一時的に変更してから、○ の中に → が書かれたアイコンをクリックして編集してから、Default version を戻してください。

 メールの確認

  1. WordPress の フォームからメールを送信する
  2. http://127.0.0.1:1080 にブラウザでアクセスしてメールを確認

 注意

  • gem install 時に本当は sudo しない方がいいのですが、macOS にデフォルトインストールされている Ruby を使う場合は、sudo が必要になります。もし苦でなければ、Homebrew をインストールして、anyenv をインストールして、anyenv を使って rbenv をインストールするのが吉です。面倒に感じるかもしれませんが、今後の Mac での開発を豊かなものにするためにも、インストールしておくのオススメします。
  • Homebrew = パッケージ管理システム
  • anyenv = env 系を管理するシステム
  • rbenv = Ruby のバージョン管理ができるシステム。ユーザーディレクトリに Ruby がインストールされるので、gem を sudo なしに気兼ねなく使えるようになる。

 おまけ

WordPress の開発を行う場合、Local by Flywheel を使うと、SSL の検証、MailCatcher によるメールの送受信テスト環境が一瞬で手にはいります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/16 02:41 編集

    ありがとうございます。
    教えていただいた手順と、下記の手順を追加することで確認できました。

    1. WordPress のプラグイン Mailcatcher for WordPress を追加 & 有効化
    2. wp-config.php へ define(WP_MAILCATCHER, true); を記入

    キャンセル

  • 2018/06/16 02:43

    本当はphp.iniだけでよいのかもしれませんが、受信できませんでした。

    キャンセル

  • 2018/06/16 03:45 編集

    プラグインは不要ですよ。

    sendmail_path = '/usr/bin/env catchmail -f imamura@wordpress.dev'

    の部分を以下の手順で書き換えると受信できるようになると思います。

    下記のコマンドをターミナルで実行
    $ which catchmail

    そうすると
    $ which catchmail
    /Users/example/.anyenv/envs/rbenv/shims/catchmail

    みないな感じで、catchmail コマンドがある場所がでてくるので

    sendmail_path = '/usr/bin/env /Users/example/.anyenv/envs/rbenv/shims/catchmail -f imamura@wordpress.dev'

    という感じで書き換えると動くはずです。

    キャンセル

  • 2018/06/16 13:20

    ご指摘の通り、「catchmail コマンドのインストール先を確認」の部分を飛ばしていました。
    プラグインを使わなくても受信できるようになりました。
    ありがとうございます。

    キャンセル

0

Gmail API をお使いのようですが、これは、必須なのでしょうか?

Gmail API が、必須でなく MAMP PRO 上で稼働している Web システムからメールを送信できれば良いのであれば、MAMP Pro に Postfix の設定画面があると思うので、お使いのメールのドメイン、メールサーバー、ユーザー名、パスワードを設定したら メール送信できるようにならないでしょうか?

Servers and Services > Postfix - MAMP & MAMP PRO 4 Documentation 参照。


別の方法としては、Mac に標準でインストールされている Postfix を設定する方法もあります。
(MAMP PRO のPostfix設定も Postfix を書き換えていたはずなので、同じ内容になるはずなのですが...)

mac MAMP から メール送信
【MAMPでGmail送信】Postfixの設定について

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/14 09:43

    回答ありがとうございます。
    gmailしか持っていない状態なので、gmailにて送信できないかを試しています。
    教えていただいたサイトを参考に設定していますが送信はできていないようです。
    エラーもなく、ログも残らない…。

    **Note: Some providers do not allow Smart-Hosts, like Google Mail.**

    とgmailは難しいかもしれません。
    他のフリーメール(yahooとか?)だとできるかもしれません。もう少し調べてみます。

    キャンセル

  • 2018/06/14 10:28 編集

    Gmail の場合、「アプリパスワード」を設定すれば、できるようですが、ダメでしょうか? https://support.google.com/mail/answer/185833?hl=ja

    キャンセル

0

CHERRYさまの回答と違った回答になるので、imamuraさまの方で混乱しないようであればお試しください。

以下環境でメール送信の確認が出来ています。

  • WordPress 4.9.6-ja
  • WP Mail SMTP 1.2.5(メーラーはGmail, 自前でsmtpサーバ(postfix等)の設定はナシ)

基本的にはWP Mail SMTP by WPFormsにあるGmail documentationの手順通りで設定出来ます。

Step 1: Install the WP Mail SMTP Plugin
Step 2: Create a Web Application
Step 3: Grant Permissions and Send Test Email

「Authorized redirect URI」はWordPressを8000ポートで動作させているのでhttp://localhost:8000/wp-admin/options-general.php?page=wp-mail-smtp&tab=authと設定されています。これをGoogle API側に設定する必要があります。

無効なリダイレクト: https://localhost(略)/wp-admin/options-general.php?page=wp-mail-smtp&tab=auth はパブリック トップレベル ドメイン(.com、.org など)で終わる必要があります


こちらのエラーは、どのアクション時に発生していますでしょうか。
上記Stepの手順を正しく実施しているか、ご確認ください。

 コメントを受けての追記

Google側でエラーになっているのですね。
Google API側のドキュメントがまだ見つけられていませんが、エラーメッセージ通りの仕様なのだと思います。
ただし、localhostは許容されているようです。
そのため、WordPress側のドメインをlocalhostに変更できるようであれば、変更することで回避できるかと思います。
こちら側の設定のスクリーンショットを参考に添付します。

イメージ説明

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/14 21:05

    Authorized redirect URIを「承認済みのリダイレクト URI」に設定して、保存をクリックすると表示されます。
    コメント欄に画像をアップロードできないようなのでこちらで。
    https://screenshot.net/jp/lz4nqsd

    キャンセル

  • 2018/06/14 21:34

    > コメント欄に画像をアップロードできないようなのでこちらで
    質問に追記することで、画像を質問に添付できますよ。
    画像自体は上記URLで確認しました。

    キャンセル

  • 2018/06/14 22:33

    なるほど localhost だと大丈夫なんですね。また画像の件、了解しました。

    mamp では ssl にしてローカルで https 接続しています。
    ただ、mampは localhost に対してはssl設定ができず、別名にしなくてはいけないようなのです。
    そのためlocalhostでwordpressを動かせないという事情もあります。

    キャンセル

  • 2018/06/15 01:55

    https://kitaney-wordpress.blogspot.com/2017/10/mamp-ssl-macos-high-sierra.html?m=1

    localhostでもsslいけるみたいですよ。

    キャンセル

  • 2018/06/16 02:23

    ありがとうございます。
    Mamp自体を調整する方法ですね。

    キャンセル

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

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • WordPress

    7218questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • MAMP

    218questions

    Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト