Magentoを使用してAWS SESを使用して「送信元メール」と「送信元名」を自動的に設定する

目次

  1. はじめに
  2. MagentoでAWS SESを構成する
  3. 電子メール設定を管理するためのカスタムMagentoモジュールの作成
  4. よくある問題のトラブルシューティング
  5. 結論
  6. FAQ

はじめに

ブランドを強化し、顧客との深いつながりを築くために送信されるすべてのメールが、あなたのeコマースサイトでの操作を想像してください。 今、送信するメールごとに「送信元メール」と「送信元名」を手動で設定する煩雑な作業を想像してみてください。 それは煩わしい作業のようですね? Magento 2.4.7とAmazon Web Services Simple Email Service(AWS SES)を取り扱う場合、このタスクは管理の悪夢に発展するか、適切な構成でシームレスな自動プロセスになる可能性があります。 今日、Magentoでこれらの設定を効率的に構成する方法について詳しく説明します。手作業の繰り返しを排除し、常に適切なブランドを持つメールを確実に送信します。

この投稿では、AWS SESを使用してマジェントストアからメールを送信する前に「送信元メール」と「送信元名」を自動的に設定する方法について学びます。 カスタムMagentoモジュールの作成方法について説明します。さらに、ネイティブモジュールが意図したように機能しない場合の考え方や一般的な問題の効果的な対処方法についても説明します。 これにより、AWS SESと統合された効果的なメール送信フレームワークを手に入れ、顧客との一貫したコミュニケーションを確保できるようになります。

MagentoでAWS SESを構成する

要件の理解

MagentoとAWS SESの統合には、AWSでのメールのアイデンティティの確認が必要です。これにより、AWS SESが制御していないドメインまたはアドレスからのメール送信を防止し、サービスの乱用を防ぎます。 Magentoは設定で「送信元メール」と「送信元名」のフィールドを提供していないため、カスタムソリューションが必要です。

デフォルトのソリューションの不足点

Mageplaza SMTPプラグインなどの既存のソリューションを使用しない理由を疑問に思うかもしれません。 使ってみると、Mageplaza SMTPモジュールは予期しないクラッシュを引き起こし、Magento管理インターフェースを使用できなくします。 カスタムソリューションは、操作の円滑な進行を維持するために不可欠な、より安定性と柔軟性を提供します。

電子メール設定を管理するためのカスタムMagentoモジュールの作成

モジュールのセットアップ

まず、Magento管理者設定に「送信元メール」と「送信元名」のフィールドを追加するカスタムモジュールを作成する必要があります。

  1. モジュールディレクトリ構造の作成:

    app/code/YourNamespace/YourModule
    

    このディレクトリ内に、次のサブディレクトリを作成します。

    • etc
    • etc/adminhtml
  2. モジュールの定義: registration.phpを作成します。

    <?php
    \Magento\Framework\Component\ComponentRegistrar::register(
        \Magento\Framework\Component\ComponentRegistrar::MODULE,
        'YourNamespace_YourModule',
        __DIR__
    );
    

    また、module.xmlも作成します。

    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
        <module name="YourNamespace_YourModule" setup_version="1.0.0"/>
    </config>
    
  3. 電子メール設定フィールドの追加: etc/adminhtml内にsystem.xmlを作成します。

    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/system_file.xsd">
        <system>
            <section id="trans_email">
                <group id="ident_general" translate="label">
                    <field id="name" translate="label" type="text">
                        <label>送信元名</label>
                    </field>
                    <field id="email" translate="label" type="text">
                        <label>送信元メール</label>
                    </field>
                </group>
            </section>
        </system>
    </config>
    

これらの設定が利用されていることを確認する

メール送信時に設定が適用されるようにするには、Magentoの電子メール機能を拡張する必要があります。

  1. オーバーライドの作成: モジュール内に、コアのMagento電子メール送信クラスを拡張する新しいクラスを作成します。

    Email.phpを作成します。

    <?php
    namespace YourNamespace\YourModule\Model;
    
    use Magento\Framework\Mail\Template\TransportBuilder as OriginalTransportBuilder;
    
    class Email
    {
        protected $transportBuilder;
        protected $scopeConfig;
    
        public function __construct(
            OriginalTransportBuilder $transportBuilder,
            \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
        ) {
            $this->transportBuilder = $transportBuilder;
            $this->scopeConfig = $scopeConfig;
        }
    
        public function sendEmail($templateId, $receiverInfo, $templateVars)
        {
            $this->transportBuilder->setTemplateIdentifier($templateId)
                ->setTemplateOptions([
                    'area' => \Magento\Framework\App\Area::AREA_FRONTEND,
                    'store' => \Magento\Store\Model\Store::DEFAULT_STORE_ID
                ])
                ->setTemplateVars($templateVars)
                ->setFromByScope([
                    'name' => $this->scopeConfig->getValue('trans_email/ident_general/name'),
                    'email' => $this->scopeConfig->getValue('trans_email/ident_general/email')
                ])
                ->addTo($receiverInfo['email'], $receiverInfo['name'])
                ->getTransport()
                ->sendMessage();
        }
    }
    
  2. カスタムモジュールで新しい機能を利用する:

    メールを送信する必要がある場合は、上記のクラスからsendEmailメソッドを使用してください。

    次に使用例を示します。

    $emailSender = $objectManager->create('YourNamespace\YourModule\Model\Email');
    $emailSender->sendEmail('your_email_template_id', $receiverInfo, $templateVariables);
    

よくある問題のトラブルシューティング

Mageplaza SMTPの失敗

前述のように、Mageplaza SMTPなどのプラグインは予期しないクラッシュを引き起こす場合があります。 カスタムモジュールは、リスクを低減するためにソリューションをニーズに合わせて調整し、一般化されたサードパーティのソリューションへの依存度を低減します。

値が自動的にロードされることの確保

設定を手動で繰り返し読み込むと、人為的なエラーや非効率性のリスクが増加します。 カスタムモジュールを構成して、格納された設定値を自動的に使用するようにすることで、これらの問題を回避し、堅牢なソリューションを実現します。

結論

AWS SESをMagentoに組み込むことは手間のかかる作業ではありません。 カスタムモジュールを作成することにより、「送信元メール」と「送信元名」の設定を自動化し、Magentoストアから送信されるすべてのメールが適切にブランド化および管理されるようにします。 信頼性の低いプラグインを排除し、クライアントのニーズに合わせたソリューションを採用することで、eコマースの操作はスムーズで信頼性のあるプロフェッショナルなものになります。

FAQ

1. Magentoからメールを送信するためのプラグインを使用しない理由は?

Mageplaza SMTPなどのプラグインはシステムクラッシュや不安定性を引き起こす場合があります。 カスタムモジュールは、ニーズに合わせた統合と信頼性を提供するため、より制御が可能です。

2. AWS SESでメールのアイデンティティを確認する方法は?

AWSアカウントにログインし、SESセクションに移動し、確認済みのアイデンティティとしてメールアドレスまたはドメインを追加および確認します。 AWSは確認のために確認メールを送信します。

3. 「送信元メール」と「送信元名」を頻繁に変更する必要がある場合はどうすればよいですか?

カスタムモジュールを使用すると、バックエンドコードを変更せずにMagento管理パネルでこれらの設定を簡単に更新できます。 この柔軟性は、操作の効率を維持するのに役立ちます。

4. このモジュールは他のSMTPサービスにも使用できますか?

はい、設定で認証情報とサーバー設定を調整して、このモジュールを任意のSMTPサービスで使用するように調整できます。

これらの方法を確立することで、Magentoストアはメールの通信に一貫性と専門性を持ち、ブランドの信頼性と顧客の信頼に直接的な利益をもたらします。