2013-05-19 31 views
5

Tôi đang cố gắng thiết lập danh sách các đối số duy nhất cho mỗi email, tham chiếu chính thức của api SMTP mô tả tính năng này khá ngắn gọn, here.GửiGrid đối số duy nhất với các email riêng lẻ

Và các tài liệu API của thư viện SendGrid PHP tôi đang sử dụng, cũng không giúp được gì nhiều:

/** 
    * setUniqueArguments 
    * Set a list of unique arguments, to be used for tracking purposes 
    * @param array $key_value_pairs - list of unique arguments 
    */ 
    public function setUniqueArguments(array $key_value_pairs) 
    { 
    $this->header_list['unique_args'] = $key_value_pairs; 
    return $this; 
    } 

    /** 
    * addUniqueArgument 
    * Set a key/value pair of unique arguments, to be used for tracking purposes 
    * @param string $key - key 
    * @param string $value - value 
    */ 
    public function addUniqueArgument($key, $value) 
    { 
    $this->header_list['unique_args'][$key] = $value; 
    return $this; 
    } 

Vì vậy, trong thực tế, tôi có trụ sở thực hiện của tôi trên kết luận hợp lý rõ ràng, và quyết định tạo ra json đa chiều cho phần đối số duy nhất của tiêu đề, với sự tương ứng từ một đến một đối với mảng giá trị thay thế và đến mảng người nhận, nhưng không may là không hoạt động và dẫn đến lỗi tiêu đề API XSMTP không hợp lệ bị trả về email của tôi.

Nếu ai đó đã sử dụng tính năng này trước đây và có thể hướng dẫn tôi một cách ngắn gọn về cách sử dụng nó một cách chính xác (có thể gọi addUniqueArgument sau mỗi addTo?), Đó có thể là một trợ giúp tuyệt vời cho tôi.

+0

bạn có thể đặt bất kỳ số lượng tiêu đề nào trong email - nhưng tại sao bạn muốn là câu hỏi quan trọng –

+0

Có thực sự cần phải có sự nhất trí để làm cho tài liệu trở nên tốt hơn! –

Trả lời

5

Tôi thấy rằng bạn đang đề cập đến các đối số duy nhất trước tiên nhưng sau đó bạn đang đề cập đến các thay thế là một vấn đề hoàn toàn không liên quan. Đối số duy nhất áp dụng cho toàn bộ cuộc gọi API, ví dụ: các đối số có thể chứa ID lô trong hệ thống của bạn để bạn có thể dễ dàng so khớp các sự kiện email với dữ liệu của mình hơn. Thay thế, tuy nhiên, về cơ bản là chuỗi thay thế trong email để cá nhân hóa từng email cho người nhận và những email đó áp dụng cho từng người nhận email thay vì cuộc gọi API.

lập luận độc đáo Sendgrid

Bạn không cần phải gây rối với các tiêu đề yêu cầu JSON nếu bạn đang sử dụng thư viện API của họ, chỉ cần sử dụng thư viện như bất kỳ đối tượng PHP khác. Ví dụ, nếu bạn phải thiết lập ba biến, var1, var2, var3 nó là một trong hai điều này:

$Sendgrid -> setUniqueArguments(array(
    'var1' => 'value1', 
    'var2' => 'value2', 
    'var3' => 'value3' 
)); 

hay này:

$Sendgrid -> addUniqueArgument('var1', 'value1'); 
$Sendgrid -> addUniqueArgument('var2', 'value2'); 
$Sendgrid -> addUniqueArgument('var3', 'value3'); 

Sự khác biệt là tùy chọn đầu tiên setUniqueArguments hoàn toàn thay thế bất kỳ biến số khác bạn đã thêm trước đó, nhưng cái thứ hai, addUniqueArgument, thêm biến vào biến hiện tại.

thay Sendgrid

Hãy nói rằng bạn đang sử dụng thư viện API của họ và bạn có 2 người nhận, [email protected] và alice @ dụ com, và bạn cần phải đề cập đến tên của họ trong email. Trong trường hợp này, bạn sử dụng một chuỗi giữ chỗ trong phần nội dung của email, về cơ bản mọi thứ sẽ không xảy ra bình thường. Trong trường hợp của chúng tôi, giả sử nó có thể là:

Hello <<Name>> 

trong đó <<Name>> là trình giữ chỗ cho tên người nhận. Trong trường hợp này bạn có thể xây dựng cuộc gọi API như vậy (Tôi đi ra ngoài những phần liên quan đến nội dung email, vv):

$Sendgrid -> addTo('[email protected]'); 
$Sendgrid -> addTo('[email protected]'); 
$Sendgrid -> addSubstitution('<<Name>>', array('Bob', 'Alice')); 

Các giá trị trong addSubstituion cuộc gọi phải được theo thứ tự giống như người nhận danh sách.

+2

Chỉ muốn kêu gọi điều này phản ánh câu trả lời chính thức của SendGrid là gì. Cảm ơn bạn đã trả lời! – Swift