Отправка почты нескольким получателям с использованием sendgrid - PullRequest
0 голосов
/ 03 декабря 2011

Я хочу отправлять почту с помощью sendmail нескольким получателям за один звонок.Я использую CakePHP 1.3.Отправка почты одному получателю работает нормально.Мне было интересно, смогу ли я отправить почту нескольким получателям (обычно около 2-5 получателей).

$this->Email->smtpOptions = array('port'=>'587', 'timeout'=>'30', 'host' => 'smtp.sendgrid.net', 'username'=>'****', 'password'=>'****', 'client' => '***');
$this->Email->delivery = 'smtp';
$this->Email->from = 'Swiso Support <support@swiso.net>';
$this->Email->to = $user['email'];
$this->Email->subject = $title;
$this->Email->template = 'email';
$this->Email->sendAs = 'both';
$this->Email->send();

Могу ли я передать массив получателей $this->Email->to.

Я ценю любогопомощь.

Ответы [ 5 ]

2 голосов
/ 03 декабря 2011

Гугл "CakePHP электронной почты" показывает это:

Кулинарная книга CakePHP 1.3: электронная почта

это должно дать вам то, что вам нужно: например, есть поле bcc, которое позволяет отправлять письма нескольким получателям.

В книге также есть глава о отправке нескольких сообщений в цикле.

0 голосов
/ 19 июня 2019

Я мало что знаю о CakePHP, но Sendgrid предоставляет простой способ отправки одной почты нескольким получателям в php, и вы можете преобразовать этот код в Cakephp,

Sendgrid предоставляет метод Mail::addTos, в котором мы можем добавить несколько писем, которым мы хотим отправить нашу почту ,

мы должны передать ассоциативный массив электронных писем и имен пользователей в addTos.

см. Пример ниже:

$tos = [ 
        //user emails       =>  user names  
        "user1@example.com" => "Example User1",
        "user2@example.com" => "Example User2",
        "user3@example.com" => "Example User3"
    ];
    $email->addTos($tos);

Если вы хотите увидеть полный пример, который представлен в библиотеке github sendgrid-php, то я включил его ниже, чтобы вы могли понять весь пример:

<?php
require 'vendor/autoload.php'; // If you're using Composer (recommended)
// Comment out the above line if not using Composer
// require("<PATH TO>/sendgrid-php.php");
// If not using Composer, uncomment the above line and
// download sendgrid-php.zip from the latest release here,
// replacing <PATH TO> with the path to the sendgrid-php.php file,
// which is included in the download:
// https://github.com/sendgrid/sendgrid-php/releases

$email = new \SendGrid\Mail\Mail(); 
$email->setFrom("test@example.com", "Example User");
$tos = [ 
    "test+test1@example.com" => "Example User1",
    "test+test2@example.com" => "Example User2",
    "test+test3@example.com" => "Example User3"
];
$email->addTos($tos);
$email->setSubject("Sending with Twilio SendGrid is Fun");
$email->addContent("text/plain", "and easy to do anywhere, even with PHP");
$email->addContent(
    "text/html", "<strong>and easy to do anywhere, even with PHP</strong>"
);
$sendgrid = new \SendGrid(getenv('SENDGRID_API_KEY'));
try {
    $response = $sendgrid->send($email);
    print $response->statusCode() . "\n";
    print_r($response->headers());
    print $response->body() . "\n";
} catch (Exception $e) {
    echo 'Caught exception: '.  $e->getMessage(). "\n";
}
0 голосов
/ 02 октября 2012

http://book.cakephp.org/1.3/en/view/1284/Class-Attributes-and-Variables

до : Адрес, на который будет отправлено сообщение (строка).Разделите адреса запятыми, если вы хотите отправить электронное письмо нескольким получателям.

cc : массив адресов для отправки сообщения.

bcc : массив адресов для bcc (скрытая копия) сообщения на.

Примеры:

$recipients = array("email1@gmail.com", "email2@yahoo.com");
$this->Email->to = implode(",", $recipients);
$this->Email->cc = $recipient;
$this->Email->bcc = $recipient;
0 голосов
/ 03 декабря 2011
foreach($recipients as $recipient) {
    $this->Email->to .= $recipient['email'] . ",";
}

Отправка BCC - лучший способ сделать это, если вы не хотите, чтобы получатели могли видеть, кому вы их отправили. В этом случае это будет

$this->Email->bcc

вместо

$this->Email->to
0 голосов
/ 03 декабря 2011

Краткий ответ: Нет. Я тоже изучал это (используя Sendgrid), и, если вы не хотите использовать поле bcc, нет способа сделать это в одном вызове. Вы не должны беспокоиться о том, чтобы просто отправить их в цикле.

...