EC-CUBE4系をレンタルサーバー（XSERVER等）にインストールした後に、メール設定でSMTP・SSLを使用する設定手順

##概要

[前記事（XSERVERに、EC-CUBE4系をもっとも簡単にインストールする手順）](https://qiita.com/96ssbike/items/e9fc2c87e6a5b916df5c)において、EC-CUBE4のインストール画面での[「メールの設定（SMTP設定）」](https://qiita.com/96ssbike/items/e9fc2c87e6a5b916df5c#%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%AE%E8%A8%AD%E5%AE%9Asmtp%E8%A8%AD%E5%AE%9A)という項目では、一旦SSLなし：587番ポートで設定するとお伝えしました。

メールのSMTP設定内容は、EC-CUBE4のインストール終了後、カレントディレクトリ上にある.envファイル内にデータが書き込まれます。

今回は、この.envファイルを書き換えてSSLあり：465番ポート書き換えましょう！という内容です。

**この記事の上位版として、SendGridを使用するための記事を書きました（2020年9月27日）**
詳しくは[こちらをご覧ください](https://tecchan.jp/entry/200927-sendgrid/)（外部リンク）。

###参考：XSERVER上での.envファイルの設置場所

.envファイルは、EC-CUBE4をインストールしたカレントディレクトリ上にあります。
他のレンタルサーバーにインストールした場合でも同様です。
![SnapCrab_NoName_2019-6-13_18-31-32_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336790/63bb1a99-6e97-3745-3d84-60a568d841a6.png)

##具体的な設定手順

それでは、SSLへの対応方法（.envファイルの記述変更方法）を説明していきます。
やり方はとても簡単です。

###前回EC-CUBE4のインストール画面で設定した内容（XSERVERでの例）

- SMTPホスト：sv***.xserver.jp（契約サーバーにより異なる）
- SMTPポート：587
- SMTPユーザー：メールアカウントの追加で設定したメールアドレスを入力
- SMTPパスワード：メールアカウントの追加で設定したパスワード

この設定内容が.envファイルの25行目に、下記の通りに記述されます。

```
MAILER_URL=smtp://SMTPユーザー:SMTPパスワード@sv***.xserver.jp:587?auth_mode=plain
```

このままの状態でもメールは送信出来るのですが、SSLに対応していないため以下の記法に書き換えます。

```
MAILER_URL=smtp://sv***.xserver.jp:465?encryption=ssl&auth_mode=login&username=SMTPユーザー&password=SMTPパスワード
```

これで正常に、SSLを使用してメールが送信出来るようになりました。

※この書き換えにより、SSLなし：587番ポートからSSLあり：465番ポートに切り替わっています。

###さくら・ロリポップなどの他レンタルサーバーを使用する場合

公式サイトの[EC-CUBE 4系対応サーバ](https://www.ec-cube.net/partner/search_rental03.php)を参照して、お気に入りのレンタルサーバーを選んでください。

また、設定項目のSMTPホスト・SMTPポート・SMTPユーザーに関しては、各レンタルサーバーごとに必要な内容に適宜書き換えてください。

##補足事項・番外編

###補足：EC-CUBE4上での.envファイルの取扱について

[EC-CUBE 4.0 開発ドキュメント](http://doc4.ec-cube.net/quickstart_install#本番環境での-env-ファイルの利用について)上にも記載のある通り、.envファイルは開発用途での環境変数を設定するためのものであり、本番環境での使用は推奨されません。本番環境では、環境変数をサーバー設定ファイルに設定することを推奨します。とのことです。

この設定変更方法は、後日ご紹介したいと思います。

###番外編：Sendmailを使用してメールを送信する方法

EC-CUBE4インストール画面で、特にメール設定をいじらずに設定すると、

- SMTPホスト：localhost
- SMTPポート：25
- SMTPユーザー：無記入（空欄）
- SMTPパスワード：無記入（空欄）

といった内容になり、このままで設定してしまうとメール送信エラーになり、会員登録や注文、問い合わせでタイムアウトまで非常に長い時間待機させられるが、結局メールが送信されなくなります（メールが届かなくなります）。

.envファイルには下記の通りに記述されています。

```
MAILER_URL=smtp://localhost:25
```

これを、下記の通りに記述変更します。

```
MAILER_URL=sendmail://localhost
```

これで、Sendmailを使用してメール送信することが出来ます。

※但し、なるべくSendmailを使用せずにSMTPしたほうが良いかなとは思います。

##参考情報URL

この記事を作成するにあたり、参考にさせていただいた各記事のURLは下記のとおりです。
情報を提供してくださった皆様には、謝辞を申し上げます。

※逆に、これだけの中から情報を探すのが結構大変でした。必要性を強く感じて、体系的に学べるようにまとめた次第です。

###Sendmail設定関連

- [EC-CUBE 4 のメール設定で sendmail を使う方法](https://nufire.net/ec-cube-4-sendmail/)（NuFire様）
- [注文や会員登録時のメールが送れない時の対応方法](https://umebius.com/eccube/eccube4-cant-send-email-env-config/)（U-Mebius様）

###SMTP・SSLなしの設定関連

- [問い合わせメールが届かない・・・　EC-CUBE4](http://ratorin.jugem.jp/?eid=17)（EC-CUBEカスタマイズ備忘録 （EC-CUBE2.11~,EC-CUBE4～)様）
- [Qiita - ec-cube4 に さくらのメールのSMTPを設定する方法](https://qiita.com/tDash/items/10ae233d08e17622b660)（[@tDash](https://qiita.com/tDash)様）

###SMTP・SSLありの設定関連

- [EC-CUBE 開発コミュニティ - 注文完了ボタンや問い合わせ送信で４０秒ほどかかってしまう。](https://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=20974&forum=11)（株式会社シロハチ様）