php - 发送时事通讯的最有效方式

标签 php api email newsletter

关闭。这个问题不符合 Stack Overflow guidelines 。它目前不接受答案。












想改善这个问题吗?更新问题,以便堆栈溢出为 on-topic

6年前关闭。




Improve this question




今天,当我发送基本的电子邮件时,我使用了一个“Mail”类,它是一个使用 SwiftMailer 的自定义包装器,如下所示:

<?php
Mail::create('Message title')
        ->template('Template string or view path. Global variable "var" is "{var}". Current user is {username}.')
        ->tags(array('var' => 'value 1'))
        ->from('contact@mydomain.com')
        ->to('mail@example.com', array('username' => 'Boris'))
        ->transport(Mail::SMTP)
        ->send();

它适用于基本电子邮件,但由于多种原因不能用于发送时事通讯:
  • 无池管理
  • 无延迟发送
  • 无跟踪

  • 所以我想了一种方法来集中更复杂的电子邮件管理。我做了一个架构:

    enter image description here

    我不希望远程服务器存储任何联系信息 ,只存储事件、收件人和统计信息,如下图:

    Database diagram

    Recipient ”表的“ data ”字段用于存储自定义数据结构,当API被要求提供有关收件人的信息时,该数据结构将被发回。例如 :
    <?php
    $result = NewsletterAPI::getRecipientsViewReport($campaignRef);
    //
    // Will contain something like : 
    // Array
    // (
    //   [recipients] => Array
    //     (
    //       [0] => Array
    //         (
    //           [email] => toto@gmail.com
    //           [opened] => 3
    //           [last_open_date] => '2015-02-02 12:32:23', 
    //           [data] => Array
    //             (
    //               [id] => 123
    //             )
    //         )
    //       [1] => Array
    //         (
    //           [email] => tata@hotmail.com
    //           [opened] => 0
    //           [last_open_date] => null, 
    //           [data] => Array
    //            (
    //              [id] => 17
    //            )
    //        )
    //    )
    // )
    

    远程服务器除了发送电子邮件并获取有关它们的统计信息外,不关心其他任何事情。无论电子邮件地址背后是什么实体或如何管理用户。

    它只阻止用户访问不属于它的数据,并阻止非管理员用户访问管理 API 方法(如创建用户)。

    这种方式很容易集成到任何网站中,我只需要存储我想要发送邮件的帐户的 api key (例如在我的“ User ”实体中添加“ mailing_api_key ”字段)。

    所以我的问题

    首先,您如何看待这种架构?

    在现实世界的使用中,电子邮件的数量不应该非常大(每周几千),但我希望系统具有最低限度的稳健性。

    除此之外,我能想到的三个主要问题是:
  • 被列入黑名单,
  • 有糟糕的统计结果,因为我不知道除了使用跟踪图像以外的任何其他方法来跟踪 View ,而且很容易被阻止,
  • 从我读过的内容来看,检测反弹似乎非常复杂,而且我没有相关经验。

  • 因此,我进行了一些研究以找到可以处理此问题的专业服务,例如:
  • Mailchimp
  • Sendinblue
  • MPZMail
  • Campayn
  • FreshMail

  • 等等..但他们都想管理联系人和很多我不关心的事情。

    我只想要一个完全没有 UI 的服务 ,它做一些与我上面描述的接近的事情:
  • 动态帐户创建(仅适用于管理员帐户),
  • 每次都将电子邮件发送到自定义地址列表, 没有限制,也没有任何类型的预先创建的邮件列表 ,
  • 简单的获取方法:
  • 事件列表(执行请求的用户),
  • 事件统计,
  • 特定地址的统计信息,
  • 和.. 就是这样!

  • 非常感谢您已经阅读了所有内容,我希望找到解决方案。

    问候。

    最佳答案

    大多数(大)公司只使用像mailchimp这样的第三方API。只需订阅一些公司通讯并查看电子邮件标题。

    如果预算超过数百万的公司使用第三方通讯公司,这是有原因的。您将在垃圾邮件过滤器和您尚不知道的问题方面遇到很多麻烦……甚至不同国家/地区的法律也不同。 (例如:在德国,您必须在电子邮件中提供取消订阅链接)。

    那些第三方通讯公司提供了一个 api,您可以将其集成到 php 中。

    关于php - 发送时事通讯的最有效方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28876040/

    相关文章:

    .net - Azure API 应用程序 (.NET Core) 截断了大型 JSON 响应

    java - 为什么API中有java.util的Set?

    php - 带有 GET 参数(或同等参数)的电子邮件地址

    Python的 `email.message.as_string`将某些部分编码为base64;不清楚为什么

    php - 使用 php7 和 apache 设置 php-fpm 状态页面

    php - 碳日期检查是否为指定日期

    php - 如何在 dompdf 库上启用调试?

    php - mySQL 中的默认日期时间格式

    rest - 如何让 SendBird 服务器 API 正常工作?

    r - 从 Shiny 发送附件