【发布时间】:2014-10-01 13:06:20
【问题描述】:
这让我头疼... 我正在尝试将 csv 文件加载到 sendgrid 上的列表中,但它不起作用,我花了几个小时寻找和尝试不同的东西,以下是我的代码版本,它们具有不同程度的成功:
$file_handle = fopen("examplecsv.csv", "r");
$listname = "examplelist";
$url = 'https://sendgrid.com/api/newsletter/lists/email/add.json?api_user='.$username.'&api_key='.$password;
$str= '&list=' . $listname;
$array = array();
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 1024);
$str.= '&data[]={"email":"'.$line_of_text[0] . '"}';
}
return file_get_contents($url.$str);
fclose($file_handle);
extract($_POST);
或
$file_handle = fopen("examplecsv.csv", "r");
$array = array();
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 1024);
$array[] = 'email":"'.$line_of_text[0];
}
$emails = json_encode($array);
$emails = str_replace("\\", '', $emails);
fclose($file_handle);
extract($_POST);
//set POST variables
$url = 'https://api.sendgrid.com/api/newsletter/lists/email/add.xml';
$fields = array(
'api_user' => 'username',
'api_key' => 'password',
'list' => 'example list',
'data' => '{$emails}'
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
第二个版本导致无效的 json 字符串。 有人有什么建议吗?
谢谢。
【问题讨论】: