2016-10-22 17 views
5

Tôi đang sử dụng tập lệnh này để gửi email qua cURL. Tôi không sử dụng thư viện gửi thư và tôi đã xem các tài liệu API. Tôi muốn tùy chọn gửi tới nhiều địa chỉ "đến". Làm thế nào tôi có thể làm điều này đúng cách?SendGrid - Gửi tới nhiều địa chỉ "đến" bằng cách sử dụng cURL?

$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

Đây không phải là câu hỏi về 'cURL' hoặc php, bạn phải xem xét tài liệu về API bạn đang sử dụng. Chúng tôi không thể kỳ diệu _guess_ API đó cho phép hoặc mong đợi. – arkascha

+0

Tôi không sử dụng thư viện php của họ. – bbglazer

+1

Đặc biệt nếu bạn không sử dụng việc triển khai của chúng: bạn cần phải biết yêu cầu yiu gửi như thế nào sẽ trông giống như, shiuld được cấu trúc. Chỉ có họ mới có thể trả lời điều đó. Chỉ có họ biết những gì họ cố gắng giải thích như thế nào. – arkascha

Trả lời

1

Nhìn vào tài liệu API SendGrid (ví dụ cho v2 API): https://sendgrid.com/docs/API_Reference/Web_API/mail.html

này cũng có thể được thông qua tại như một mảng, để gửi đến nhiều địa điểm. Ví dụ: để [] = [email protected] & tới [] = [email protected]

Vì vậy, bạn có thể thêm $ này để param như mảng:

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

Nếu tôi kiếm $ thành một mảng có hai địa chỉ, nó không hoạt động. – bbglazer

+0

Bạn sử dụng phiên bản API nào? Ví dụ của tôi liên quan đến API phiên bản 2. Có lẽ có một số khác biệt? (nếu bạn sử dụng v3, vv) –

+0

Tôi cũng nhận ra rằng mảng '$ params' là mảng đa chiều trong trường hợp này, vì vậy cURL phải được đặt với các yêu cầu bổ sung. Ví dụ, bạn cần phải thêm vào $ headr [] the '" Kiểu nội dung: multipart/form-data "' và chuyển mảng của bạn vào 'http_build_query()'. Nhìn vào câu hỏi này -> http://stackoverflow.com/questions/3772096/posting-multidimensional-array-with-php-and-curl –

0

Sau đây là cách thực hiện SendGrid trong tài liệu: Sending a Basic Email to Multiple Recipients.

Trong ví dụ của bạn, chuỗi to là giá trị SMTP gốc TO:. Vì vậy, bạn không thể sử dụng một mảng, nhưng bạn có thể cung cấp một chuỗi gồm nhiều địa chỉ riêng biệt bằng dấu phẩy. Mỗi thông điệp đó sẽ được xử lý bởi SendGrid, và mỗi người nhận sẽ thấy tất cả các địa chỉ của nhau, theo kiểu "hội thoại" cổ điển.

Nếu bạn muốn tận dụng khả năng "gửi cùng một email cho nhiều người một cách rõ ràng" của SendGrid, bạn cần tận dụng API v3 như trên.

0

Đối với API email cửa hàng V2 trong mảng như:

$json_string = array(
'to' => array(
'[email protected]', '[email protected]' 
), 
'category' => 'test' 
); 

và sau đó thêm nó vào của bạn $ param mảng:

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

Xin lưu ý rằng trong trường hợp này bình thường để giải quyết, sẽ không nhận được một email. Đối với lần biết thêm chi tiết: https://sendgrid.com/docs/Integrate/Code_Examples/v2_Mail/php.html

0

Hãy thử

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

nó đã làm việc cho tôi.

Các vấn đề liên quan