SendGrid - 发送到多个"到"使用cURL的地址?

时间:2016-10-22 19:25:02

标签: php curl sendgrid

我正在使用此脚本通过cURL发送电子邮件。 我没有使用sendgrid库,我已经查看了API文档。我希望选择发送到多个"到"地址。我该怎么做呢?

$params = array(
    'to'        => $to,   
    'subject'   => $title,
    'text'      => 'Subject',
    'from'      => 'mail@mail.com',
);

$request =  $url.'api/mail.send.json';
$headr = array();
// set authorization header
$headr[] = 'Authorization: Bearer '.$pass;

$session = curl_init($request);
curl_setopt ($session, CURLOPT_POST, true);
curl_setopt ($session, CURLOPT_POSTFIELDS, $params);
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

// add authorization header
curl_setopt($session, CURLOPT_HTTPHEADER,$headr);

$response = curl_exec($session);
curl_close($session);

6 个答案:

答案 0 :(得分:1)

查看SendGrid API文档(例如,针对v2 API):https://sendgrid.com/docs/API_Reference/Web_API/mail.html

  

这也可以作为数组传递,以发送到多个位置。   示例:到[] = a@mail.com&到[] = b@mail.com

所以你可以把这个$加到param作为数组:

$to = ["one@email.com", "two@email.com"]; // etc.

答案 1 :(得分:1)

尝试

    $params = array(
    'to[0]'        => $to1,   
    'to[1]'        => $to2,
    );

它对我有用。

答案 2 :(得分:0)

以下是SendGrid在文档中执行此操作的方法:Sending a Basic Email to Multiple Recipients

在您的示例中,to字符串是本机SMTP TO:值。因此,您无法使用数组,但您可以提供逗号分隔的多个地址字符串。这些消息中的每一个都将由SendGrid处理,并且每个接收者将在经典"会话中看到彼此的所有地址。风格。

如果您想利用SendGrid"将相同的电子邮件明确地发送给多个人"能力,您需要利用上述v3 API。

答案 3 :(得分:0)

对于API V2存储电子邮件,如:

$json_string = array(
'to' => array(
'amin.charoliya@conversionbug.com', 'amincharoliya@gmail.com'
),
'category' => 'test'
);

然后将其添加到$ param数组中:

'x-smtpapi' => json_encode($json_string),

请注意,在这种情况下,正常地址,将不会收到电子邮件。 详情请访问: https://sendgrid.com/docs/Integrate/Code_Examples/v2_Mail/php.html

答案 4 :(得分:0)

尝试一下:

$params = array(
'to[0]'        => 'abc@email.com',   
'to[1]'        => 'xyz@email.com',   
'subject'   => $title,
'text'      => 'Subject',
'from'      => 'mail@mail.com',
);

 $request =  $url.'api/mail.send.json';
 $headr = array();
 // set authorization header
 $headr[] = 'Authorization: Bearer '.$pass;

 $session = curl_init($request);
 curl_setopt ($session, CURLOPT_POST, true);
 curl_setopt ($session, CURLOPT_POSTFIELDS, $params);
 curl_setopt($session, CURLOPT_HEADER, false);
 curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

 // add authorization header
 curl_setopt($session, CURLOPT_HTTPHEADER,$headr);

 $response = curl_exec($session);
 curl_close($session);

您要做的唯一更改就是添加此代码=>

    'to[0]'        => 'abc@email.com',   
    'to[1]'        => 'xyz@email.com', 

答案 5 :(得分:0)

根据 Yossi 的回答,我做到了...

//if we have an array of email addresses, add a to[i] param for each
if (is_array($to)) {
    $i=0;
    foreach($to as $t) $params['to['.$i++.']']=$t;
//just one email, can add simply like this
} else {
    $params['to']=$to;
}