magento|使用亚马逊的ses服务进行邮件营销

邮件作为外贸电商系统中很重要的一个范畴,如何保证在大批量的发送邮件而不被邮箱系统误认为是垃圾邮件而拦截就是很重要的一个功能。我们的客户有使用免费的163企业邮,有使用付费的邮箱如阿里云企业邮箱,zoho的等等,但往往在小批量发送邮件的时候还可以,如果出现一次性发送几十封邮件,尤其是内容类似(均采用邮件模板),就会被误判为垃圾邮件,导致邮箱无法发出邮件。这个时候就需要考虑如何实现批量邮箱服务了。目前我所了解的有两个,一个是阿里云的邮件营销,付费升级,成功后提供给类似普通客户登陆授权的账户,在magento系统后台部署即可。另外一种就是亚马逊的ses服务,这个貌似是免费的,但接入的时候略有不同,中间有几个坑,特别记录一下:

1、邮箱服务插件依旧使用ASchroder_SMTPPro,该插件已经集成了ses通讯所需的基础类包和功能,只需要在此基础之上进行部署即可;

2、亚马逊账户申请AWS Access Key ID and Secret Access Key,这个key是账户的全局授权秘钥,在右上角的账户列表我的安全凭证中创建并下载

magento|使用亚马逊的ses服务进行邮件营销_第1张图片
3、第三步就是在亚马逊账户中的ses服务列表验证授权域和验证授权邮箱。特别说明的是授权域为域名验证,具体的流程可以参考官方引导,基本上就是增加一条TXT的解析记录。授权邮箱为沙盒模式下的可发送邮箱,默认启用该服务后均处于沙盒模式,只有单独提交申请才能脱离沙盒。意思是测试的时候邮箱发送只能为已验证的邮箱。全部验证完成后,可以在邮箱列表send a test email。

magento|使用亚马逊的ses服务进行邮件营销_第2张图片
如果以上都通过,那么说明ses服务正常,即可开始提交脱离沙盒模式的申请,等转正后即可正式部署到magento的后台,启用ses服务。
另外需要特别说明一点,就是ses可用区的概念,目前提供ses服务的可用区只有三个,分别是俄勒冈,弗吉尼亚北部,爱尔兰,分别对应的区是us-west-2,us-east-1,eu-west-1,然后每个区对应的host主机地址不同,需要更改插件中的扩展类的地址。
具体文件地址为app\code\local\Aschroder\SMTPPro\lib\AmazonSES.php的第57行:
    public function __construct(Array $config = array(), $host = 'https://email.us-west-2.amazonaws.com')
    {
        if(!array_key_exists('accessKey', $config)){
            throw new Zend_Mail_Transport_Exception('This transport requires the Amazon access key');
        }
        
        if(!array_key_exists('privateKey', $config)){
            throw new Zend_Mail_Transport_Exception('This transport requires the Amazon private key');
        }
        
        $this->_accessKey = $config['accessKey'];
        $this->_privateKey = $config['privateKey'];
        $this->_host = Zend_Uri::factory($host);
    }

smtp设置
更改初始化传参数的host地址为对应的可用区的host主机地址。另外每个可用区验证的域和邮箱是独立不同步的。千万不要用ses后台提供的host地址,根本测试不通,可以根据可用区参数不同,更改地址为方法中的写法,才能测试成功。特别注明(下图给出的地址不可用):

更改后台smtp的配置,填入对应秘钥,test即可成功。

magento|使用亚马逊的ses服务进行邮件营销_第3张图片

你可能感兴趣的:(magento)