Invia file (v2)
L'API sendfile consente all'utente di inviare un file per la convalida e-mail in blocco. Il tipo di contenuto deve essere multipart / form-data. Fare riferimento all'esempio C # per i dettagli.
Non ci sono limitazioni alla dimensione del file, al numero di email o al numero di file che puoi inviare utilizzando questo endpoint, a condizione che tu abbia i crediti nel tuo account per coprire il numero di email inviate nel file, sarà accettato.
POST / v2 / sendfile
URL API: https://bulkapi.zerobounce.net/v2/sendfile
Parametri URL
- ParametroDescrizione
- filefile CSV o txt. Contenuti dell'array di byte per il file inviato. L'intestazione del contenuto è di tipo "testo / csv".
- api_keyLa tua chiave API, trovata nel tuo account. (Necessario)
- return_urlL'URL verrà utilizzato per richiamare al termine della convalida. (Opzionale)
- email_address_columnL'indice di colonna dell'indirizzo e-mail nel file. L'indice inizia da 1. (Necessario)
- first_name_columnL'indice di colonna della colonna del nome. (Opzionale)
- last_name_columnL'indice di colonna della colonna del cognome. (Opzionale)
- gender_columnL'indice di colonna della colonna di genere. (Opzionale)
- ip_address_columnL'indirizzo IP da cui l'email è stata registrata. (Opzionale)
- has_header_rowSe la prima riga del file inviato è una riga di intestazione. vero o falso (opzionale)
Se durante la richiesta di invio del file è stato specificato return_url nei Dati modulo multipart, al termine del processo di convalida POST i seguenti dati.
{
file_id": "aaaaaaaa-zzzz-xxxx-yyyy-5003727fffff",
"nome del file": "Il tuo nome file.csv",
"data di caricamento": "10/20/2018 4:35: 58 PM"
}
Invia esempi di codice file
'Librerie API complete e wrapper sono disponibili qui:
' https://www.zerobounce.net/docs/zerobounce-api-wrappers/#api_wrappers__v2__dot_net
'Invia esempio di file in VB.net
Pubblico Classe SendFileStatus
Pubblico Proprietà success Come Booleano
Pubblico Proprietà message Come Corda
Pubblico Proprietà file_name Come Corda
Pubblico Proprietà file_id Come Corda
Fine Classe
Privato Condivisa Sub SendFileAPITest()
Fioco fileFullPath Come Corda = $"percorso completo del file di un file csv o txt" ' necessario
Fioco apiKey Come Corda = "sostituisci con la tua chiave api qui" ' necessario
Fioco emailAddressColumn Come Numero intero = 2 ' necessario
Fioco firstNameColumn Come Numero intero? = 5 'facoltativo
Fioco lastNameColumn Come Numero intero? = 6 'facoltativo
Fioco genderColumn Come Numero intero? = Niente 'facoltativo
Fioco ipAddressColumn Come Numero intero? = 11 'facoltativo
Fioco hasHeaderRow Come Booleano? = Vero 'facoltativo
Fioco returnUrl Come Corda = Niente 'facoltativo
PROVARE
Fioco sendFileStatus Come SendFileStatus = SendFile(fileFullPath, apiKey, emailAddressColumn, firstNameColumn, lastNameColumn, genderColumn, ipAddressColumn, hasHeaderRow, returnUrl).Result
Console.Scrivi(JsonConvert.SerializeObject(sendFileStatus, Formatting.Indented))
Catturare ex Come Exception
Console.Scrivi(ex.InnerException.Message)
Fine PROVARE
Console.ReadKey()
Fine Sub
Pubblico Condivisa Async Funzione SendFile(
ByVal fileFullPath Come Corda,
ByVal apiKey Come Corda,
ByVal emailAddressColumn Come Numero intero,
ByVal Opzionale firstNameColumn Come Numero intero? = Niente,
ByVal Opzionale lastNameColumn Come Numero intero? = Niente,
ByVal Opzionale genderColumn Come Numero intero? = Niente,
ByVal Opzionale ipAddressColumn Come Numero intero? = Niente,
ByVal Opzionale hasHeaderRow Come Booleano? = Niente,
ByVal Opzionale returnUrl Come Corda = Niente
) Come Task(Di SendFileStatus)
Se Corda.IsNullOrEmpty(fileFullPath) Poi Gettare Nuovo Exception("Errore: fileFullPath è richiesto")
Se Corda.IsNullOrEmpty(apiKey) Poi Gettare Nuovo Exception("Errore: è richiesto apiKey")
Fioco fi = Nuovo FileInfo(fileFullPath)
Fioco fileContents = File.ReadAllBytes(fi.FullName)
Fioco fileName = fi.Nome
Fioco uri Come Uri = Nuovo Uri("https://bulkapi.zerobounce.net/v2/sendfile")
Utilizzando client = Nuovo HttpClient()
Utilizzando request = Nuovo HttpRequestMessage(HttpMethod.Post, uri)
Fioco multiPartContent Come MultipartFormDataContent = Nuovo MultipartFormDataContent()
Fioco byteArrayContent Come ByteArrayContent = Nuovo ByteArrayContent(fileContents)
byteArrayContent.Headers.Add("Tipo di contenuto", "text / csv")
multiPartContent.Add(byteArrayContent, "file", fileName)
multiPartContent.Add(Nuovo StringContent(apiKey), "api_key")
multiPartContent.Add(Nuovo StringContent(emailAddressColumn.ToString()), "email_address_column")
Se firstNameColumn Non è Niente Poi multiPartContent.Add(Nuovo StringContent(firstNameColumn.ToString()), "first_name_column")
Se lastNameColumn Non è Niente Poi multiPartContent.Add(Nuovo StringContent(lastNameColumn.ToString()), "last_name_column")
Se genderColumn Non è Niente Poi multiPartContent.Add(Nuovo StringContent(genderColumn.ToString()), "gender_column")
Se ipAddressColumn Non è Niente Poi multiPartContent.Add(Nuovo StringContent(ipAddressColumn.ToString()), "ip_address_column")
Se hasHeaderRow Non è Niente Poi multiPartContent.Add(Nuovo StringContent(Se((hasHeaderRow = Vero), "vero", "false")), "has_header_row")
Se returnUrl Non è Niente Poi multiPartContent.Add(Nuovo StringContent(returnUrl.ToString()), "return_url")
request.Content = multiPartContent
Utilizzando response = Await client.SendAsync(request, HttpCompletionOption.ResponseContentRead, CancellationToken.None).ConfigureAwait(Falso)
Fioco content = Await response.Content.ReadAsStringAsync()
Se response.IsSuccessStatusCode = Falso Poi
Fioco errore Come Corda = $"StatusCode = {CInt(response.StatusCode)}, Content = {content}"
Gettare Nuovo Exception(errore)
Fine Se
Ritorno JsonConvert.DeserializeObject(Di SendFileStatus)(content)
Fine Utilizzando
Fine Utilizzando
Fine Utilizzando
Fine Funzione
// Le librerie e i wrapper API completi sono disponibili qui:
// https://www.zerobounce.net/docs/zerobounce-api-wrappers/#api_wrappers__v2__dot_net
// https://www.zerobounce.net/docs/zerobounce-api-wrappers/#api_wrappers__v2__c-sharp
// Invia esempio di file in C #
Pubblico Classe Sendfilestatus
{
Pubblico bool success { ottenere; impostato; }
Pubblico Corda message { ottenere; impostato; }
Pubblico Corda file_name { ottenere; impostato; }
Pubblico Corda file_id { ottenere; impostato; }
}
Privato statico vuoto Sendfileapitest()
{
Corda fileFullPath = $"percorso completo del file di un file csv o txt"; //necessario
Corda apiKey = "sostituisci con la tua chiave api qui"; //necessario
int emailAddressColumn = 2; //necessario
int? firstNameColumn = 5; //Opzionale
int? lastNameColumn = 6; //Opzionale
int? genderColumn = nullo; //Opzionale
int? ipAddressColumn = 11; //Opzionale
bool? hasHeaderRow = Vero; //Opzionale
Corda returnUrl = nullo; //Opzionale
PROVARE
{
Sendfilestatus sendFileStatus = Inviare file(fileFullPath, apiKey, emailAddressColumn, firstNameColumn, lastNameColumn, genderColumn, ipAddressColumn, hasHeaderRow, returnUrl).Result;
Console.Scrivi(JsonConvert.Serializeobject(sendFileStatus, Formatting.Indented));
}
Catturare (Eccezione ex)
{
Console.Scrivi(ex.InnerException.Message);
}
Console.ReadKey();
}
Pubblico statico async Task<SendFileStatus> Inviare file(Corda fileFullPath, Corda apiKey, int emailAddressColumn,
int? firstNameColumn = nullo, int? lastNameColumn = nullo, int? genderColumn = nullo,
int? ipAddressColumn = nullo, bool? hasHeaderRow = nullo, Corda returnUrl = nullo)
{
Se (Corda.IsNullOrEmpty(fileFullPath))
Gettare Nuovo Eccezione("Errore: fileFullPath è richiesto");
Se (Corda.IsNullOrEmpty(apiKey))
Gettare Nuovo Eccezione("Errore: è richiesto apiKey");
var fi = Nuovo Fileinfo(fileFullPath);
var fileContents = File.Readallbytes(fi.FullName);
var fileName = fi.Name;
Uri uri = Nuovo Uri(@"https://bulkapi.zerobounce.net/v2/sendfile");
Utilizzando (var client = Nuovo HttpClient())
Utilizzando (var request = Nuovo Httprequestmessage(HttpMethod.Post, uri))
{
Multipartformdatacontent multiPartContent = Nuovo Multipartformdatacontent();
Bytearraycontent byteArrayContent = Nuovo Bytearraycontent(fileContents);
byteArrayContent.Headers.INSERISCI("Tipo di contenuto", "text / csv");
multiPartContent.INSERISCI(byteArrayContent, "file", fileName);
multiPartContent.INSERISCI(Nuovo Stringcontent(apiKey), "api_key");
multiPartContent.INSERISCI(Nuovo Stringcontent(emailAddressColumn.Accordare()), "email_address_column");
Se (firstNameColumn != nullo)
multiPartContent.INSERISCI(Nuovo Stringcontent(firstNameColumn.Accordare()), "first_name_column");
Se (lastNameColumn != nullo)
multiPartContent.INSERISCI(Nuovo Stringcontent(lastNameColumn.Accordare()), "last_name_column");
Se (genderColumn != nullo)
multiPartContent.INSERISCI(Nuovo Stringcontent(genderColumn.Accordare()), "gender_column");
Se (ipAddressColumn != nullo)
multiPartContent.INSERISCI(Nuovo Stringcontent(ipAddressColumn.Accordare()), "ip_address_column");
Se (hasHeaderRow != nullo)
multiPartContent.INSERISCI(Nuovo Stringcontent((hasHeaderRow == Vero) ? "vero" : "false"), "has_header_row");
Se (returnUrl != nullo)
multiPartContent.INSERISCI(Nuovo Stringcontent(returnUrl.Accordare()), "return_url");
request.Content = multiPartContent;
Utilizzando (var response = await client.SendAsync(request, HttpCompletionOption.ResponseContentRead, CancellationToken.None).Configureawait(Falso))
{
var content = await response.Content.Readasstringasync();
Se (response.IsSuccessStatusCode == Falso)
{
var error = $"StatusCode = {(int) response.StatusCode}, Content = {content}";
Gettare Nuovo Eccezione(error);
}
Ritorno JsonConvert.Deserializeobject<Sendfilestatus>(content);
}
}
}
<?php
// Le librerie e i wrapper API completi sono disponibili qui:
// https://www.zerobounce.net/docs/zerobounce-api-wrappers/#api_wrappers__v2__php
$ ricciolo = curl_init();
curl_setopt_array($ ricciolo, vettore(
CURLOPT_URL => "https://bulkapi.zerobounce.net/v2/sendfile",
CURLOPT_RETURNTRANSFER => Vero,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "INVIARE",
CURLOPT_POSTFIELDS => "------WebKitFormBoundary7MA4YWxkTrZu0gWContent-Disposition: form-data; name="api_key"replacewithyours------WebKitFormBoundary7MA4YWxkTrZu0gWContent-Disposition: form-data; name="email_address_column"replacewithyours------WebKitFormBoundary7MA4YWxkTrZu0gW--",
CURLOPT_HTTPHEADER => vettore(
"Postino-token: fae6714d-dc09- 4 e08-b50d-c97030603b61",
"controllo cache: no-cache",
"content-type: multipart / form-data; boundary = ---- WebKitFormBoundary7MA4YWxkTrZu0gW"
),
));
$ risposta = curl_exec($ ricciolo);
$ err = curl_error($ ricciolo);
curl_close($ ricciolo);
Se ($ err) {
eco "Errore cURL #:" . $ err;
} altro {
eco $ risposta;
}
?>
// Le librerie e i wrapper API completi sono disponibili qui:
//https://www.zerobounce.net/docs/zerobounce-api-wrappers/#api_wrappers__v2__java
Okhttpclient client = Nuovo Okhttpclient();
Tipo di supporto mediaType = Tipo di supporto.parse("multipart / form-data; boundary = ---- WebKitFormBoundary7MA4YWxkTrZu0gW");
Requestbody body = Requestbody.creare(mediaType, "------WebKitFormBoundary7MA4YWxkTrZu0gWContent-Disposition: form-data; name="api_key"replacewithyours------WebKitFormBoundary7MA4YWxkTrZu0gWContent-Disposition: form-data; name="email_address_column"replacewithyours------WebKitFormBoundary7MA4YWxkTrZu0gW--");
Richiesta request = Nuovo Richiesta.Costruttore()
.url("https://bulkapi.zerobounce.net/v2/sendfile")
.inviare(body)
.AddHeader("Tipo di contenuto", "multipart / form-data; boundary = ---- WebKitFormBoundary7MA4YWxkTrZu0gW")
.AddHeader("cache-control", "no-cache")
.AddHeader("Postino-token", "25 6 d608ba- cb5- 4 88 c8c- d7-d47276c67d8e")
.costruire();
Risposta response = client.nuova chiamata(request).eseguire();
# Librerie e wrapper API completi sono disponibili qui:
# https://www.zerobounce.net/docs/zerobounce-api-wrappers/#api_wrappers__v2__python
importare http.client
conn = http.client.HTTPConnection("bulkapi, zerobounce netti")
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gWContent-Disposition: form-data; name="api_key"replacewithyours------WebKitFormBoundary7MA4YWxkTrZu0gWContent-Disposition: form-data; name="email_address_column"replacewithyours------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'tipo di contenuto': "multipart / form-data; boundary = ---- WebKitFormBoundary7MA4YWxkTrZu0gW",
'cache-control': "no-cache",
'Postino-token': "bc455eda- 9884-417 e-b16f- 3 a5fef3f7540"
}
conn.request("INVIARE", "v2, sendfile", payload, headers)
res = conn.getresponse()
data = res.read()
stampare(data.decode("utf- 8"))
// Le librerie e i wrapper API completi sono disponibili qui:
// https://www.zerobounce.net/docs/zerobounce-api-wrappers/#api_wrappers__v2__IOS
importare FONDAZIONE
permettere headers = [
"Tipo di contenuto": "multipart / form-data; boundary = ---- WebKitFormBoundary7MA4YWxkTrZu0gW",
"cache-control": "no-cache",
"Postino-token": "2 f68fcc3-d9b6- 458 b-b613- 56 f6a03e6617"
]
permettere parameters = [
[
"nome": "api_key",
"valore": "replacewithyours"
],
[
"nome": "email_address_column",
"valore": "replacewithyours"
]
]
permettere boundary = "---- WebKitFormBoundary7MA4YWxkTrZu0gW"
var body = ""
var error: NSError? = zero
per param in parameters {
permettere paramName = param["nome"]!
body += "--(confine)"
body += "Disposizione del contenuto: form-data; name ="(paramName)""
Se permettere filename = param["nome del file"] {
permettere contentType = param["Tipo di contenuto"]!
permettere fileContent = Corda(contentsOfFile: filename, encoding: Corda.Codifica.utf8)
Se (error != zero) {
stampare(error)
}
body += "; nomefile ="(filename)""
body += "Tipo di contenuto: (contentType)"
body += fileContent
} altro Se permettere paramValue = param["valore"] {
body += "(paramvalue)"
}
}
permettere request = Nsmutableurlrequest(url: NSURL(string: "https://bulkapi.zerobounce.net/v2/sendfile")! Come url,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "INVIARE"
request.allHTTPHeaderFields = headers
request.httpBody = postData Come Dati
permettere session = Urlsession.shared
permettere dataTask = session.datatask(with: request Come URLRequest, completionHandler: { (data, response, error) -> vuoto in
Se (error != zero) {
stampare(error)
} altro {
permettere httpResponse = response Come? Httpurlresponse
stampare(httpResponse)
}
})
dataTask.curriculum vitae()
// Le librerie e i wrapper API completi sono disponibili qui:
// https://www.zerobounce.net/docs/zerobounce-api-wrappers/#api_wrappers__v2__IOS
// Seleziona la lingua VB o C # per l'importazione del file # esempio campione # <Foundation/Foundation.h>
NSDictionary *headers = @{ @"tipo di contenuto": @ "multipart / form-data; boundary = ---- WebKitFormBoundary7MA4YWxkTrZu0gW",
@ "cache-control": @ "no-cache",
@ "Postino-token": @ "92 624 c5b06e- f- 44 e5-bd86-f537bc6cef67" };
NSArray *parameters = @[ @{ @"nome": @ "api_key", @"valore": @ "replacewithyours" },
@{ @"nome": @ "email_address_column", @"valore": @ "replacewithyours" } ];
NSString *boundary = @ "---- WebKitFormBoundary7MA4YWxkTrZu0gW";
NSError *error;
NSMutableString *body = [NSMutableString string];
per (NSDictionary *param in parameters) {
[body appendFormat:@"--%@", boundary];
Se (param[@"nome del file"]) {
[body appendFormat:@ "Disposizione dei contenuti: form-data; name ="%@ "; nome file ="%@"", param[@"nome"], param[@"nome del file"]];
[body appendFormat:@"Tipo di contenuto: %@", param[@"tipo di contenuto"]];
[body appendFormat:@"%@", [NSString stringWithContentsOfFile:param[@"nome del file"] encoding:NSUTF8StringEncoding error:&error]];
Se (error) {
NSLog(@"%@", error);
}
} altro {
[body appendFormat:@ "Disposizione dei contenuti: form-data; name ="%@"", param[@"nome"]];
[body appendFormat:@"%@", param[@"valore"]];
}
}
[body appendFormat:@"--%@--", boundary];
NSData *postData = [body dataUsingEncoding:NSUTF8StringEncoding];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://bulkapi.zerobounce.net/v2/sendfile"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"INVIARE"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
Se (error) {
NSLog(@"%@", error);
} altro {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];
// Le librerie e i wrapper API completi sono disponibili qui:
// https://www.zerobounce.net/docs/zerobounce-api-wrappers/#api_wrappers__v2__android
//N/A
Risposta dell'endpoint
Risposta riuscita
{
"successo": Vero,
"messaggio": "File accettato",
"nome del file": "Il tuo nome file.csv",
"file_id": "aaaaaaaa-zzzz-xxxx-yyyy 5003727 fffff"
}
Risposta all'errore
{
"successo": Falso,
"messaggio": [
"Messaggio di errore"
]
}