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

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

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

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

2回答

3558閲覧

Docker 環境での CakePHP のメール送信について

phpuser

総合スコア15

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2017/09/23 12:22

編集2022/01/12 10:55

Docker 環境で CakePHP 3.5 でアプリケーションを作成しております。
メールの設定は特にしていない(デフォルトのまま)のですが、メールが届いたり届かなかったりします。
特に、夜は届くけれど日中は届かないような感覚があります。
こういうことはあるのでしょうか。

(追記)
届かない場合もエラーにはなっていません。
fromはGmailのアドレスで、toはGoogle Appsのアドレスです。
/var/log/maillogは空っぽでした。
Gmailから受信したメールのソースを見たら、Received: from xxx.localdev ([202.214.xxx.xxx])のようなDockerに設定しているドメインになっていました。

(9/24 追記)
メールの設定

php

1 'EmailTransport' => [ 2 'default' => [ 3 'className' => 'Mail', 4 // The following keys are used in SMTP transports 5 'host' => 'localhost', 6 'port' => 25, 7 'timeout' => 30, 8 'username' => 'user', 9 'password' => 'secret', 10 'client' => null, 11 'tls' => null, 12 'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null), 13 ], 14 ], 15 16 /** 17 * Email delivery profiles 18 * 19 * Delivery profiles allow you to predefine various properties about email 20 * messages from your application and give the settings a name. This saves 21 * duplication across your application and makes maintenance and development 22 * easier. Each profile accepts a number of keys. See `Cake\Mailer\Email` 23 * for more information. 24 */ 25 'Email' => [ 26 'default' => [ 27 'transport' => 'default', 28 'to' => 'to@example.com', 29 'from' => 'from@gmail.com', 30 'returnPath' => 'from@gmail.com' 31 //'charset' => 'utf-8', 32 //'headerCharset' => 'utf-8', 33 ], 34 ],

メール送信のメソッド

php

1public function register($member) 2{ 3 $this 4 ->setTo($member->email, $member->name) 5 ->setSubject('subject) 6 ->setEmailFormat('text') 7 ->setViewVars(['member' => $member]) 8 ->setTemplate('register'); 9}

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

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

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

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

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

scsi

2017/09/23 12:26

届く届かないについて詳しい情報とメールログを追記してください。fromは誰でtoは誰なのかなど、
phpuser

2017/09/23 13:25

ありがとうございます。質問欄に追記いたしました。
退会済みユーザー

退会済みユーザー

2017/09/23 23:25

CAKEPHPのメール設定部分(USER,PASSはマスクしてね)を追記してください
phpuser

2017/09/24 14:54

ありがとうございます。(9/24 追記)として質問欄に追記いたしました。
guest

回答2

0

その設定では GMail アドレスを偽装して送信しているので以下の設定に変えてください

php

1 'EmailTransport' => [ 2 'default' => [ 3 'className' => 'Smtp', 4 // The following keys are used in SMTP transports 5 'host' => 'ssl://smtp.gmail.com', 6 'port' => 465, 7 'timeout' => 30, 8 'username' => 'gmail address', 9 'password' => 'gmail userpassword', 10 'transport' => 'Smtp', 11 'client' => null, 12 'tls' => null, 13 'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null), 14 ], 15 ],

場合によっては初回送信時に確認のメールが届くかもしれませんが

投稿2017/09/24 14:59

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

phpuser

2017/09/24 15:29

設定を変更してみましたが、以下のようなエラーが出て送信できませんでした。 ``` stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed stream_socket_client(): Failed to enable crypto stream_socket_client(): unable to connect to ssl://smtp.gmail.com:465 (Unknown error) ```
退会済みユーザー

退会済みユーザー

2017/09/24 15:34

サーバーマシン(開発マシン)にインストールされている OPENSSLの証明書が古いのか時間がずれているのかあたりですかねそのエラーだと
phpuser

2017/09/24 15:43

OPENSSLの証明書というのを入れていないと思うので、そのせいでしょうか。。。
guest

0

gappsの迷惑メールに振り分けられているか、
gmailの送信制限に引っかかるくらいの送信をしているかだと思います。

dockerのメールログに何も記述されていないのなら、
直接phpで外部mtaに接続して送信していると思うので調べにくいですね。。。

投稿2017/09/23 21:51

scsi

総合スコア2840

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

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

phpuser

2017/09/24 14:56

ありがとうございます。 迷惑メールボックスにはないようでした。 また、送信制限にひっかかるほどは送っていないとは思います(数十件 / 時間 ぐらい)。
scsi

2017/09/24 15:18

ローカルのpostfixにgmail名乗って送ってましたか。。。それだとspf,dkim,dmarcの検証全てクリア出来ない、というより、偽装メールなのでまずいですね。続けるとipも汚れる可能性がありますよ。
phpuser

2017/09/24 15:45

ありがとうございます。 メールの設定の以下の部分を Docker に割り当てているドメインにしてみましたが、やはり maillog は空っぽでした。 'Email' => [ 'default' => [ 'transport' => 'default', 'to' => 'to@example.com', 'from' => 'from@gmail.com', 'returnPath' => 'from@gmail.com' //'charset' => 'utf-8', //'headerCharset' => 'utf-8', ], ],
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問