2013-05-19 27 views
5

Se provo a impostare un elenco di argomenti univoci per ogni messaggio di posta elettronica, il riferimento ufficiale dell'API SMTP descrive brevemente questa funzione, here.InviaGrid argomenti univoci con e-mail individuali

E la documentazione API della biblioteca SendGrid PHP la sto utilizzando, inoltre, non ha aiutato molto:

/** 
    * 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; 
    } 

Quindi, in realtà, ho basato la mia implementazione sulla conclusione logica ovvia, e ha deciso di creare json multidimensionale per la parte unique-arguments dell'intestazione, con corrispondenza uno a uno dell'array dei valori di sostituzione e dell'array dei destinatari, ma sfortunatamente non ha funzionato e ha provocato un errore di intestazione dell'API XSMTP non valido rimbalzato alla mia email

Se qualcuno ha già utilizzato questa funzione e può istruirmi brevemente su come usarlo correttamente (magari chiamando addUniqueArgument dopo ogni addTo?), Può essere di grande aiuto per me.

+0

è possibile impostare qualsiasi numero di intestazioni nell'e-mail - ma perché si desidera è la domanda importante –

+0

Ci dovrebbe essere davvero un consenso per migliorare la documentazione! –

risposta

5

Vedo che prima si menzionano argomenti univoci, ma poi si menzionano sostituzioni che sono una questione completamente non correlata. Argomenti univoci si applicano alla chiamata API nel suo complesso, ad esempio quelli che possono contenere un ID batch nel sistema in modo che sia possibile abbinare più facilmente gli eventi di posta elettronica ai dati. Le sostituzioni, tuttavia, sono fondamentalmente la sostituzione delle stringhe nelle e-mail per personalizzare ciascuna e-mail per il destinatario e quelle si applicano a ciascun destinatario dell'e-mail invece della chiamata API.

argomenti unici SendGrid

Non dovete fare confusione con le intestazioni di richiesta JSON se si sta usando la loro libreria API, è sufficiente utilizzare la libreria come qualsiasi altro oggetto PHP. Per esempio, se è necessario impostare tre variabili, var1, var2, var3 è sia questo:

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

o questo:

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

La differenza è che la prima opzione setUniqueArguments sostituisce completamente tutte le altre variabili hai aggiunto prima ma il secondo, addUniqueArgument, aggiunge una variabile a quelle esistenti.

sostituzioni SendGrid

Diciamo che si sta utilizzando la loro libreria API e si dispone di 2 destinatari, [email protected] e Alice @ esempio com, ed è necessario menzionare il loro nome nella e-mail. In questo caso si utilizza una stringa segnaposto nel corpo dell'email, in pratica qualsiasi cosa che non si verificherebbe normalmente. Nel nostro caso, supponiamo che potrebbe essere:

Hello <<Name>> 

dove <<Name>> è il segnaposto per il nome dei destinatari. In questo caso è possibile costruire la chiamata API in quanto tale (sto lasciando fuori le parti relative ai contenuti e-mail, etc.):

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

I valori nella chiamata addSubstituion devono essere nello stesso ordine come destinatario elenco.

+2

Volevo solo dire che ciò riflette la risposta ufficiale di SendGrid. Grazie per aver risposto! – Swift