2016-10-22 16 views
5

我正在使用此腳本通過cURL發送電子郵件。 我沒有使用sendgrid庫,我已經看過API文檔。我想要發送到多個「到」地址的選項。我該如何正確地做到這一點?SendGrid - 使用cURL發送到多個「to」地址?

$params = array(
    'to'  => $to, 
    'subject' => $title, 
    'text'  => 'Subject', 
    'from'  => '[email protected]', 
); 

$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); 
+1

這不是關於'cURL'或php的問題,您必須查看您正在使用的API的文檔。我們不能奇蹟般地討論API允許或期望的內容。 – arkascha

+0

我沒有使用他們的php庫。 – bbglazer

+1

特別是如果你不使用他們的實現:你需要知道如何請求yiu發送應該看起來像,希望是有條理的。只有他們可以回答。只有他們知道他們試圖解釋如何。 – arkascha

回答

1

看SendGrid API文檔(例如,對於V2 API):https://sendgrid.com/docs/API_Reference/Web_API/mail.html

這也可以被傳遞以作爲數組,以發送到多個位置。 實例:爲[] = [email protected] &爲[] = [email protected]

所以,你可以添加此$到PARAM爲數組:

$to = ["[email protected]", "[email protected]"]; // etc. 
+0

如果我使用兩個地址創建$數組,它不起作用。 – bbglazer

+0

你使用什麼版本的API?我的例子涉及API v2。也許有一些差異? (如果你使用v3等) –

+0

我也意識到,在這種情況下'$ params'數組是多維數組,因此cURL必須設置爲額外的需求。例如,你需要在$ headr []中添加''Content-type:multipart/form-data''並將你的數組傳遞給'http_build_query()'。看看這個問題 - > http://stackoverflow.com/questions/3772096/posting-multidimensional-array-with-php-and-curl –

0

這裏的SendGrid怎麼做它在文檔中:Sending a Basic Email to Multiple Recipients

在您的示例中,to字符串是本機SMTP TO:值。所以你不能使用數組,但是你可以提供一個逗號分隔的多個地址串。這些消息中的每一個都將由SendGrid處理,並且每個收件人都將以經典的「對話」風格查看彼此的所有地址。

如果您想要利用SendGrid的「將同一電子郵件發送給多個人」的能力,您需要像上面那樣利用v3 API。

0

嘗試

$params = array(
    'to[0]'  => $to1, 
    'to[1]'  => $to2, 
    'subject' => $title, 
    'text'  => 'Subject', 
    'from'  => '[email protected]', 
); 

這是爲我工作。