uluru/antibounce

反弹插件能够防止已弹回的电子邮件再次发送。

1.0 2015-09-30 03:16 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:03:30 UTC


README

「SES - SNS - 应用程序」的集成,用于获取弹回信息,并在应用程序侧对目标电子邮件地址进行处理。

注意)如果应用程序服务器有IP限制等,则来自SNS的通知将不会收到,因此需要放开SNS的通信限制。

SES, SNS的区域为 US-EAST-1 (北部弗吉尼亚)

IP列表: https://forums.aws.amazon.com/ann.jspa?annID=2347

1. 程序准备

1-1. 创建bounce_logs表

创建一个用于保存弹回历史的表(bounce_logs)。 (不需要创建Model)

1-2. 在composer.json中安装本插件和aws-php-sns-message-validator

"repositories": [{
  "type": "package",
  "package": {
      "name": "plugins/anti_bounce",
      "version": "1.0",
      "type": "cakephp-plugin",
      "require": {
          "composer/installers": "*"
      },
      "source": {
          "url": "git@github.com:uluru/anti_bounce.git",
          "type": "git",
          "reference": "master"
      }
  }
}]


"extra": {
    "installer-paths": {
        "app/plugins/anti_bounce": ["plugins/anti_bounce"]
    }
}


"require": {
    "plugins/anti_bounce": "1.0",
    "aws/aws-php-sns-message-validator": "1.1"
}

1-3. 更新配置文件

routes.php

Router::connect(
    '/anti_bounce/receive',
    array(
        'plugin' => 'AntiBounce',
        'controller' => 'AntiBounce',
        'action' => 'receive'
    )
);

bootstrap.php

Configure::write(
    'AntiBounce',
    array(
        'topic' => '*****',
        'mail' => '*****',
        'settings' => array(
            'stopSending' => false, // true = stop mail sending, false = just write log
            'email' => array(
                'model' => 'User',
                'key' => 'id',
                'mailField' => 'mail_address',
            ), // メールアドレスのレコードを指定する
            'updateFields' => array(
                array(
                    'model' => 'User',
                    'key' => 'id',
                    'fields' => array(
                        'send' => 0,
                        'active' => 0,
                    )
                )
            ) // stopSending = true の場合に更新するレコードの設定
        )
    )
);

2. 在SES中注册电子邮件地址

「验证新电子邮件地址」→「验证此电子邮件地址」→点击发送来的电子邮件地址链接,激活电子邮件地址

在bootstrap.php的mail项中填写已激活的电子邮件地址。

3. 在SES控制台中创建SNS主题

  1. 「电子邮件地址」→ 点击第2步中注册的电子邮件地址
  2. 点击「通知」标签的「编辑通知配置」
  3. 点击「编辑通知配置」
  4. 输入适当的「主题名称」和「显示名称」
  5. 点击「创建主题」后,在弹回项的下拉菜单中选择创建的主题。

4. 激活SNS主题

第3步中创建的SNS主题已在SNS的弗吉尼亚北部(区域:US-EAST)创建。

将Topic ARN项填写到bootstrap.php的topic项中。

点击ARN链接→点击「创建订阅」

通信协议:https

端点:https://*****.****/anti_bounce/receive

几秒后重新加载控制台,

Subscription ID = PendingConfirmation
↓
Subscription ID = arn:aws:sns:us-east-1:\*\*\*\*

以确认端点的通信。

5. 测试发送bounce电子邮件

现在已准备好SES - SNS - 应用程序集成,因此可以通过SES进行bounce电子邮件的测试发送。

测试邮件发送方法

然后,将通知到第4步中设置的端点的弹回邮件信息。

之后,如果应用程序发送的电子邮件地址(弹回的电子邮件地址)有相关的记录,则在bootstrap.php中设置的模型将被更新。