EC-CUBEから送信したメールが届かない、または遅延する場合の原因と対処法を解説します。src/Eccube/Service/MailService.phpの実装を基に、トラブルシューティングのポイントを説明します。

EC-CUBEのメール送信の仕組み

EC-CUBE 4系ではSymfony\Component\Mailer\MailerInterfaceを使用してメール送信を行います。

// src/Eccube/Service/MailService.php:124-130
$message = (new Email())
    ->subject("[".$this->BaseInfo->getShopName()."] ".$MailTemplate->getMailSubject())
    ->from(new Address($this->BaseInfo->getEmail01(), $this->BaseInfo->getShopName()))
    ->to($this->convertRFCViolatingEmail($Customer->getEmail()))
    ->bcc($this->BaseInfo->getEmail01())
    ->replyTo($this->BaseInfo->getEmail03())
    ->returnPath($this->BaseInfo->getEmail04());

メールアドレス設定(dtb_base_info)

カラム 用途 管理画面の項目名
email01 From, BCC 送信元メールアドレス
email03 Reply-To 返信先メールアドレス
email04 Return-Path エラー通知先メールアドレス

よくある原因と対処法

1. サイトのドメインとFrom(email01)のドメインが異なる

ドメインが異なるとメールが届く可能性が下がります。ドメインを合わせることで多少届きやすくなります。

2. MAILER_DSNの設定ミス

# .env
# Gmail SMTPの場合(アプリパスワード必須)
MAILER_DSN=smtp://username:app_password@smtp.gmail.com:587

# SendGridの場合
MAILER_DSN=smtp://apikey:SG.xxxxx@smtp.sendgrid.net:587

# さくらレンタルサーバーの場合
MAILER_DSN=smtp://username:password@初期ドメイン.sakura.ne.jp:587

3. SPF/DKIM/DMARCの未設定

2024年2月以降、GmailはSPF/DKIM/DMARC認証が必須です。DNSに以下を設定してください。

# SPFレコードの例
v=spf1 include:_spf.google.com include:spf.sendgrid.net ~all

# DMARCレコードの例
v=DMARC1; p=none; rua=mailto:dmarc@example.com

4. エラーが出ている場合はTransportExceptionの確認

メール送信エラーがある場合はTransportExceptionInterfaceでcatchされ、ログに出力されます。

// src/Eccube/Service/MailService.php:159-164
try {
    $this->mailer->send($message);
    log_info("仮会員登録メール送信完了");
} catch (TransportExceptionInterface $e) {
    log_critical($e->getMessage());
}

エラー時はvar/log/prod/front.logまたはadmin.logを確認してください。

デバッグ設定

開発環境でメール送信をデバッグするには、.envで以下を設定します。

# MailCatcherやMailHog等のローカルSMTPサーバーを使用
MAILER_DSN=smtp://localhost:1025

まとめ

メール不達の多くはMAILER_DSN設定とDNS認証設定で解決します。

日本発!ECオープンプラットフォーム「EC-CUBE」 EC-CUBEゴールドパートナー EC-CUBEは株式会社イーシーキューブの商標です

EC-CUBEに関するお問い合わせ


    [重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。

    EC-CUBEバージョンアップ