php - Symfony swift_mail : send to multiple address but only display one address per email

标签 php symfony email

我想向地址列表发送电子邮件,但我希望每个人都收到包含他的电子邮件地址的电子邮件:(而不是扩散列表中的其他电子邮件地址)。
我正在使用 symfony 和 Swift 邮件。我的代码目前看起来像这样(它正在运行):

public function sendmail(Notification $notification, $alert){
            $to = array();

            foreach ($members as $member) {
                $to[] = $member->getUser()->getEmail();  
            }

            $html = $this->templating->render(
                'PlatformBundle:Emails:email.html.twig',
                array('alert' => $alert, 'notification' => $notification, 'user' => $this->user)
            );          

            // Configure and send the mail
            $message = \Swift_Message::newInstance()
            ->setSubject('an email ')
            ->setFrom($this->sender_email)
            ->setCc($this->user->getEmail())
            ->setTo($to)
            ->setBody($html, 'text/html');

            $mailStatus = $this->mailer->send($message);
}

我有 2 个解决方案(我不喜欢其中任何一个!)。

  1. 使用密件抄送 ( Sending to multiple Email addresses but displaying only one C# ) 但它使我的电子邮件看起来像垃圾邮件

  2. 循环并向每个成员发送相同的电子邮件(似乎真的很消耗服务器资源)

    public function sendmail(Notification $notification, $alert){
            $to = array();
    
            foreach ($members as $member) {
                $to[] = $member->getUser()->getEmail();  
    
                $html = $this->templating->render(
                    'PlatformBundle:Emails:email.html.twig',
                    array('alert' => $alert, 'notification' => $notification, 'user' => $this->user)
                );          
    
                // Configure and send the mail
                $message = \Swift_Message::newInstance()
                ->setSubject('an email ')
                ->setFrom($this->sender_email)
                ->setCc($this->user->getEmail())
                ->setTo($to)
                ->setBody($html, 'text/html');
    
                $mailStatus = $this->mailer->send($message);
            }
    

这个循环可以吗?

有更好的主意吗?

最佳答案

循环确实是唯一的解决方案。

如果您有很多收件人,您将很快被标记为垃圾邮件(并被禁止)。你会想要通过一个专用的邮件平台(每次发送之间有一点时间),你可以自己编写代码(相当繁重的工作),或者有许多邮件平台作为服务,例如 MailChimp 或 MailJet。

这完全取决于要发送的邮件数量。每天最多大约 100 个可能没问题(尽管这是我脑海中的任意数字)。
超过某个阈值,并且取决于您使用的邮件服务器(例如本地服务器或 gmail),您的 IP 或帐户可能会被禁止。例如,大多数电子邮件提供商都有每天的邮件限制。

电子邮件服务有很多发送规则,例如,它们延迟电子邮件;他们使用多个域和地址发送;他们与主要邮件提供商(gmail、yahoo...)合作,以确保他们的域不会自动标记为垃圾邮件...

基本上,如果你真的想给很多人发很多邮件,我真的不建议你自己动手。有太多的警告。

关于php - Symfony swift_mail : send to multiple address but only display one address per email,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31680991/

相关文章:

PHP:从 POP3 或 IMAP 下载收到的电子邮件,解析它,并在服务器上将其标记为已读/删除

php - 将多个产品添加到一个购物车中

symfony - 如何在 Symfony 中使用不同的控制台配置

android - 使用 AsyncTask 发送 Android 邮件

forms - symfony2 - 日期时间选择器 - 将表单类型合二为一

php - Twig - 插值变量

python - 如何在 Python 3 中阅读电子邮件内容

php - 是否可以在不修改 ini 文件的情况下从 PHP cli 界面加载扩展?

php - 显示不同 mysql 表中的最新条目

php - 清理 MySQL 的用户输入