Documentation
-
Premiers pas
Premiers pas
Ce Que Vous Devez Savoir
BeInBox is a SMTP relay. The service is simple to implement.
Nous allons plus loin que tous les autres en fournissant une vraie vision sur votre délivrabilité.
Nous surveillons vos envois et vous fournissons des solutions à vos éventuels problèmes de délivrabilité.
Nous allons d'importantes campagnes de newsletter, à l’email transactionnel.
Nous refusons les spams, ceux ci sont monitorés par nos outils. Nous tolérons jusqu’à 10 Mo par email.
Nos serveurs sont prévus pour conserver les connexions persistantes.
Nous vous laissons la possibilité d’ajouter tout header commençant par un X-***.
Nous traitons l’encodage à la volée de vos campagnes. -
Tags
Tags
Ce Que Vous Devez Savoir
You can add “Tags” to your emails, this will allow you to segment your sending, as for exemple separate an confirmation email from a registering email, or even men from women recipient…
Si vous souhaitez mettre plusieurs tags, il vous suffit de les séparer par des virgules.
Pour cela, vous avez deux possibilités:
1. Ajouter un contenu à votre sujet de mail (Attention le contenu de votre sujet et du tag ne doit pas dépasser 254 caractères): Ajouter un [tag:xxxxxxx] à votre sujet , ex : Bienvenu [tag: register, homme]
2. Ajouter un header a votre email , sous la forme d’un X-Tag: Ajouter un nouveau header à votre email: X-Tag: register, homme
Notre système détectera alors vos tags, et les compilera pour vous, vous les retrouverez dans nos services: webhooks, log et analytics. -
Configurer son SMTP
Configurer son SMTP (Simple Mail Transfer Protocol)
Ce Que Vous Devez Savoir
BeInBox is a SMTP relay. To send emails, you only need to point to our globally secure SMTP servers.
Hôte: smtp.BeInBox.com
Port: 25, 2525, 587
Port sécurisé: 465
Nous supportons le protocole ESMTP avec l’encription TLS. Vous pouvez vous connecter sur le port 25,587 et utiliser l’ESMTP en TLS ou le port sécurisé pour vos envois via SSL.
Vous voyez c’est simple!
Si vous souhaitez envoyez des emails, vous pouvez avoir accès à nos extraits de code (https://github.com/BeInBox/smtp-relay-snippets)ASP.net
API d’envoi
Téléchargez simplement notre connecteur .Net Connector: .Net Connector.
Relais SMTP
Ou directement utilisez la version compilée: .Net compiled ConnectorVoici un exemple de code, vous permettant d’utiliser nos services.
MailMessage message = new MailMessage();
message.From = new MailAddress("your_email@example.com");
message.To.Add(new MailAddress("recipient1@example.com"));
message.To.Add(new MailAddress("recipient2@example.com"));
message.To.Add(new MailAddress("recipient3@example.com"));
message.Subject = "Subject goes here";
message.Body = "The message goes here";
SmtpClient client = new SmtpClient();
client.Send(message);
System.Net.Mail lira la configuration SMTP depuis le fichier « web.config ». Voici un exemple de configuration:
<system.net>
<mailSettings>
<smtp from="your_email@example.com">
<network host="smtp.BeInBox.com" port="587" userName="YourBeInBoxUsername"
password="YourBeInBoxPassword" defaultCredentials="false" />
</smtp>
</mailSettings>
</system.net> -
JAVA
Configurer son SMTP
Java
API d’envoi
Téléchargez simplement notre connecteur: Java Connector.
Ou directement utilisez la version compilé .Net Compiled Connector.
Voici un code d’exemple.
/*
* This class is just here for demo purposes.
*/
package net.mxm.connector.test;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.mxm.connector.ArrayEmail;
import net.mxm.connector.CampaignParameters;
import net.mxm.connector.Content;
import net.mxm.connector.Email;
import net.mxm.connector.MxmConnect;
import net.mxm.connector.MxmConnectConfigurationException;
import net.mxm.connector.MxmConnectException;
/**
* @author nico toper
* @date 2010-10-20
*/
public class MxmTest extends Thread {
public MxmConnect mxm = null;
public int res[] = new int[20];
public MxmTest() throws MxmConnectException {
//mxm = new MxmConnect();
for (int i = 0; i < res.length; i++) {
res[i] = 0;
}
}
@Override
public void run() {
for (int i = 0; i < 2000; i++) {
try {
try {
long fStart = System.currentTimeMillis();
this.sendEmail();
//System.out.println("Time for this mail: " + ( System.currentTimeMillis() - fStart) );
} catch (MxmConnectException ex) {
Logger.getLogger(MxmTest.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (MxmConnectConfigurationException ex) {
Logger.getLogger(MxmTest.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
void testOthers() throws MxmConnectException, MxmConnectConfigurationException {
MxmConnect mxm2 = new MxmConnect("", "");
// mxm2.createTag("test");
// mxm2.createTag("test2");
String[] t = mxm2.listAllTags();
for (int i = 0; i < t.length; i++) {
System.out.println(t[i]);
}
// System.out.println(mxm2.deleteTag("test2"));
}
private String makeRandom() {
Double r = new Double(Math.random() * 1000000);
return r.toString(r);
}
protected void sendEmail() throws MxmConnectConfigurationException, MxmConnectException {
MxmConnect mxm2 = new MxmConnect("", "");
//MxmConnect mxm2 = mxm ;
// mxm2.setFastDelivery(true);
CampaignParameters cp = new CampaignParameters();
cp.setMailFrom("test@test.com");
cp.setMailFromFriendly("FriendlyName");
cp.setReplyTo(this.makeRandom());
cp.setReplyToFiltered(false);
String tags[] = { "test" };
cp.setTags(tags);
Content c = new Content();
//c.setSubject(this.makeRandom());
//c.setText(this.makeRandom());
c.setSubject("Your Subject");
c.setText("test");
StringBuffer sb = new StringBuffer();
String r = this.makeRandom();
for (int i = 0; i < 2000; i++) {
sb.append(r);
}
c.setHtml(sb.toString());
Email e = new Email();
e.setEmail("test@test.com");
ArrayEmail ae = new ArrayEmail();
ae.addEmail(e);
String host = mxm2.getHost();
System.out.println(host);
System.out.println(mxm2.sendCampaign(c, cp, ae));
//System.gc();
}
//This is the entry point for test.
public static void main(String[] args) throws MxmConnectException, MxmConnectConfigurationException {
//HeapMonitor h = new HeapMonitor();
//h.start();
for (int i = 0; i < 1; i++) {
MxmTest mxm = new MxmTest();
for (int j = 0; j < 100000; j++) {
mxm.sendEmail();
System.out.println("ok");
for (int x = 0; x < mxm.res.length; x++) {
System.out.println(x + ": " + mxm.res[x]);
}
}
}
}
Voici un autre exemple de code, vous permettant d’utiliser nos services SMTP:
import java.io.*;
import java.net.InetAddress;
import java.util.Properties;
import java.util.Date;
import javax.mail.*;
import javax.mail.internet.*;
import com.sun.mail.smtp.*;
public class Distribution {
public static void main(String args[]) throws Exception {
Properties props = System.getProperties();
props.put("mail.smtps.host","smtp.BeInBox.com");
props.put("mail.smtps.auth","true");
Session session = Session.getInstance(props, null);
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("your_email@example.com"));
msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse("Recipient_address@example.com", false));
msg.setSubject("Your subject here "+System.currentTimeMillis());
msg.setText("Your content here");
msg.setHeader("X-Mailer", "Header");
msg.setSentDate(new Date());
SMTPTransport t = (SMTPTransport)session.getTransport("smtps");
t.connect("smtp.BeInBox.com", "YourBeInBoxUsername", "YourBeInBoxPassword");
t.sendMessage(msg, msg.getAllRecipients());
System.out.println("Response: " + t.getLastServerResponse());
t.close();
}
}
-
PHP
Configurer son SMTP
PHP
API d’envoi
Téléchargez simplement notre connecteur: PHP Connector.
Voici un code d’exemple.
$content = array('subject'=> 'My subject', 'html'=> 'my html' , 'text' =>'my test');
$param = array('tag'=>array('invoice1'), 'mailfrom'=> 'ntoper@BeInBox.com', 'mailfrom_friendly'=> 'Nicolas Toper', 'replyto'=>'ntoper@BeInBox.com', 'replyto_filtered'=> 'true');
$emails[0] = array('email'=>'happy@customer.com', 'field1'=> 'test');
try {
echo $j;
print_r($mxm->sendCampaign($content, $param, $emails));
} catch (MxmException $e) {
echo $e->getMessage();
}
-
Python
Configurer son SMTP
Python
API d’envoi
Vous pouvez simplement télécharger notre connecteur Python: Python Connector.
Relais SMTP
Voici un code d’exemple.
import smtplib
#your BeInBox's credentials
BeInBox_user = 'YOUR BeInBox USERNAME'
BeInBox_password = 'YOUR BeInBox PASSWORD'
sender = "YOUR NAME "
recipients = ['RECIPIENT EMAIL']
subject = "My subject"content = """My email message"""
message = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n%s" % (sender, ", ".join(recipients), subject, content))
try:
server = smtplib.SMTP("smtp.BeInBox.com", 587)
server.ehlo()
server.starttls()
server.ehlo
server.login(BeInBox_user, BeInBox_password)
server.sendmail(sender, recipients, message)
print "Successfully sent email"
except SMTPException:
print "Error: unable to send email" -
Ruby
Configurer son SMTP
Ruby
API d’envoi
Veuillez télécharger notre connecteur: http://rubygems.org/gems/MxmConnect -
Relais SMTP
Configurer son SMTP
Relais SMTP
Voici un autre exemple de code, vous permettant d’utiliser nos services SMTP.
#Put in a file like config/initializers/BeInBox.rb
ActionMailer::Base.smtp_settings = {
:address => "smtp.BeInBox.com",
:port => 587,
:authentication => :plain,
:user_name => "YOUR_BeInBox_USERNAME",
:password => "YOUR_BeInBox_PASSWORD",
:enable_starttls_auto => false
}
ActionMailer::Base.delivery_method = :smtp -
Configuration de votre domaine
Configuration de votre domaine
Configuration DKIM
Configurer votre DKIM est très important, c’est une sécurité d’envoi pour vos emails, nous les signons pour vous dans notre système. Cela permet aux FAIs de vous reconnaître et garantir une réputation sur vos envois.
Supposons que vous utilisiez 'example.com' en tant que domaine.
1) Commencez par ajouter un enregistrement CNAME avec le nom et la valeur suivants. Adresse, Nom ou Hôte: BeInBox2._domainkey.example.com
Valeur: dkim.BeInBox.com.
Veuillez noter que votre nom de domaine peut parfois être ajouté automatiquement à ce champ. Dans ce cas, vous devrez supprimer 'example.com' dans le champ d'adresse.
Si votre hébergeur ne vous permet pas de faire un CNAME , vous pouvez ajouter un champ TXT de la même manière mais avec une valeur:
Adresse, Nom ou Hôte: BeInBox2._domainkey.example.com
Value: k=rsa\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvEpIr9ILg7iXsdMlMst5sCK+MDc4GQDaZDmgLLHHVNn952Jh4zmB1Qp+fBSUzVfcU/qW4hicOMJKRe0bo8nIB/Gvh3CtJuyAFizXCUjDtn2V4t5rg2OEpVkEXHkwUoW43Z5753Q62flW2wb3zuEqoO5fWLUt4rcIqatE+O8zmSwIDAQAB
2) In your BeInBox account, go to 'Account -> Mail Settings' and find the 'Signed-by Domain' line.
La valeur correspondante sera utilisée par les fournisseurs d'email pour vérifier un enregistrement DKIM approprié. Par exemple, si vous avez utilisé 'example.com' à l'étape 1, vous devez entrer 'example.com' dans ce champ.
Avertissement: La procédure de vérification DKIM de Hotmail nécessite que le domaine d'adresse 'Expéditeur' soit le même que le domaine de signature DKIM. Donc, si votre domaine de signature est 'example.com', votre adresse 'Expéditeur' devrait ressembler à 'hello@example.com'.
Si vous n'avez pas encore configuré votre SPF, nous vous recommandons de le faire immédiatement.
3) Testez vos paramètres
Une fois que vous avez configuré votre DKIM, vous pouvez le tester ici. Use 'BeInBox2' as Selector and your own domain name as Domain Name (Wait 4 hours for DNS propagation though.) -
Configuration DKIM
Configuration de votre domaine
Configuration DKIM
Configurer votre DKIM est très important, c’est une sécurité d’envoi pour vos emails, nous les signons pour vous dans notre système. Cela permet aux FAIs de vous reconnaître et garantir une réputation sur vos envois.
Supposons que vous utilisiez 'example.com' en tant que domaine.
1) Commencez par ajouter un enregistrement CNAME avec le nom et la valeur suivants. Adresse, Nom ou Hôte: BeInBox2._domainkey.example.com
Valeur: DKIM.BeInBox.com
Veuillez noter que votre nom de domaine peut parfois être ajouté automatiquement à ce champ. Dans ce cas, vous devrez supprimer 'example.com' dans le champ d'adresse.
Si votre hébergeur ne vous permet pas de faire un CNAME , vous pouvez ajouter un champ TXT de la même manière mais avec une valeur:
Adresse, Nom ou Hôte: BeInBox2._domainkey.example.com
Value: k=rsa\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvEpIr9ILg7iXsdMlMst5sCK+MDc4GQDaZDmgLLHHVNn952Jh4zmB1Qp+fBSUzVfcU/qW4hicOMJKRe0bo8nIB/Gvh3CtJuyAFizXCUjDtn2V4t5rg2OEpVkEXHkwUoW43Z5753Q62flW2wb3zuEqoO5fWLUt4rcIqatE+O8zmSwIDAQAB
2) In your BeInBox account, go to 'Account -> Mail Settings' and find the 'Signed-by Domain' line.
La valeur correspondante sera utilisée par les fournisseurs d'email pour vérifier un enregistrement DKIM approprié. Par exemple, si vous avez utilisé 'example.com' à l'étape 1, vous devez entrer 'example.com' dans ce champ.
Avertissement: La procédure de vérification DKIM de Hotmail nécessite que le domaine d'adresse 'Expéditeur' soit le même que le domaine de signature DKIM. Donc, si votre domaine de signature est 'example.com', votre adresse 'Expéditeur' devrait ressembler à 'hello@example.com'.
Si vous n'avez pas encore configuré votre SPF, nous vous recommandons de le faire immédiatement.
3) Testez vos paramètres
Une fois que vous avez configuré votre DKIM, vous pouvez le tester ici. Use 'BeInBox2' as Selector and your own domain name as Domain Name (Wait 4 hours for DNS propagation though.) -
Configuration SPF
Configuration de votre domaine
Configuration SPF
Ajouter la sécurité SPF dans vos DNS permet d’informer les FAIs que Critsend est autorisé à envoyer des emails pour votre compte. Cette opération est en deux étapes qui ne prendra pas beaucoup de temps.
Supposons que vous utilisiez 'example.com' en tant que domaine.
1) Ajoutez l'enregistrement TXT suivant à votre domaine: Adresse, Nom ou Hôte: example.com
Valeur TXT: v=spf1 mx include:messaging-master.com ~all
Si vous avez déjà des enregistrements SPF configurés pour votre domaine, ajoutez simplement: 'include: messaging-master.com' à votre entrée existante.
2) In your BeInBox account, go to 'Account -> Mail Settings' and find the 'On Behalf of Addresses' line.
Entrez une adresse e-mail par défaut du domaine que vous venez de mettre à jour à l'étape 1, par exemple 'noreply@example.com'. Important: Vous pouvez avoir plusieurs domaines dans ce champ, mais vous ne pouvez ajouter qu'une seule adresse au nom de domaine. Séparez chaque adresse de différents domaines avec une virgule.
Notez également que ce n'est pas la même chose que votre adresse Mail-From: ou From: et que cela n'a aucune incidence sur votre adresse Mail-From: ou From: de quelque manière que ce soit. Il ne sera utilisé par les fournisseurs d'email pour vérifier un enregistrement SPF TXT approprié.
3) Testez vos paramètres
Une fois que vous avez configuré votre SPF, vous pouvez tester votre domaine ici. Lorsque vous cliquez sur 'Get SPF record', vous devriez voir 'messaging-master.com' dans les résultats. (Attendez 4 heures pour la propagation DNS.) -
Envoyer des emails
Envoyer des emails
Avec Python:
import smtplib
server = smtplib.SMTP('smtp.BeInBox.com')
server.login(‘MYLOGIN’, MyPass) server.sendmail(‘support@BeInBox.com’, ‘ntoper@gmail.com’, ‘Hello there’) -
Envoi à l'échelle
Envoyer des emails
Envoi à l'échelle
BeInBox is able to receive more than 3 million emails per hour. We can increase or decrease this capacity as quickly as necessary as our system is fully distributed and spread out all around the globe. We are able to send your emails within two minutes provided your reputation with ISP is good enough.
Si vous voulez envoyer à l'échelle et rapide, voici quelques conseils:
SMTP est très verbeux et lent. C'est parce que le protocole nécessite beaucoup d'allers-retours entre le client et le serveur. Pour accélérer les choses, la solution évidente et efficace consiste à utiliser le multithreading et le multitraitement.
Ideally try to hit a different server each time (by resolving again and again 'smtp.BeInBox.com'; be careful- some frameworks will cache it and will resolve to the same servers).
Réutiliser les connexions si possible pour éviter un aller-retour pour l'authentification.
Parfois, la préparation de courriels à envoyer (par exemple, générer du contenu, encodage) peut prendre un certain temps. Cela aide à les préparer bien à l'avance avant d'envoyer.
Feel free to contact us on support@BeInBox.com if you need any help. -
Statistiques et Big Data
Statistiques et Big Data
Nous recueillons des statistiques sur vos livraisons auxquelles vous pouvez accéder à tout moment:
Analytique https://account.BeInBox.com/analytics/delivery vous présente une vue agrégée de vos statistiques. Cela vous permet de repérer et de résoudre tous les problèmes.
Log https://account.BeInBox.com/logs/index are a detailed view of your deliveries. If you pass us a X-uid or some tags, we will put them here. We keep data for 15 days.
L'API Webhooks est la même que le Log, sauf que nous envoyons toutes ces données dans une requête HTTP. https://account.BeInBox.com/delivery/event_api
Voici la liste complète des événements que nous suivons avec leur définition.
Nous suivons tous les événements en:
Destinataire de votre email
FAI: Domaine de votre destinataire. Par exemple, notre domaine d'entreprise est mxmtech.
Délai de livraison: Nous notons chaque email entrant.
Nom d'hôte: Le nom de la machine qui a livré votre email.
X-UID: Il s'agit de toute chaîne de caractères (<755 caractères) que vous avez transmise dans vos e-mails sous la forme d'un en-tête X-UID.
Tags: Passed in X-Tags (or in [Tags:…] in the subjet. It’s a comma separated lists.
String Supplémentaire: C'est là que nous mettons des informations supplémentaires telles que le code d'erreur SMTP et le message.
Les événements que nous suivons:
Ouverture: Nous enregistrons toutes les ouvertures atomiques, seulement lorsqu'un utilisateur affiche les images. Habituellement, nous enregistrons moins ouvert que notre concurrence, en raison de nos systèmes étant configurés pour enregistrer l'ouverture une fois la requête terminée.
Rapport de spam: Se produit quand un abonné marque votre email comme spam, auquel cas nous l'ajoutons à notre base de données de suppression. Nous sommes avertis quand cela arrive avec Outlook, Yahoo (si vous nous avez demandé d'authentifier votre DKIM), AOL et tous les FBL exploités par Return Path.
Bounce: Quand un email a été refusé, nous essayons de le renvoyer jusqu'à 12 heures. Tous les codes d'erreur sont enregistrés pendant cet événement avec la réponse du serveur SMTP. Le code d'erreur SMTP est de 4XX qui indique généralement des erreurs temporaires.
Échec permanent: Se produit lorsque nous savons que le code SMTP est de la forme 5XX. Nous ne signalons pas à cette étape, les adresses sont des adresses invalides.
Envoyé: Nous avons envoyé l'email au serveur SMTP.
Filtré: L'email est dans notre base de données de suppression (todo put link) et nous l'avons filtré. L'email n'a pas été envoyé.
Bloqué: The SMTP server rejected the email. Usually this happens because the IP is blacklisted or because the content is seen as spam. When you see this event, you can contact us on support@BeInBox.com for some additional explanations.#Email landed in spambox.
Reçu: Cet événement signifie que nous avons reçu une demande d'envoi de votre part.
Erreur: Nous n'avons pas pu livrer votre email. Parce que nous aimons la transparence, vous verrez la piletrace Python. Si vous les voyez, s'il vous plaît contactez-nous car c'est très rare.
Clic: Le destinataire a cliqué sur votre email. Le string supplémentaire contiendra le lien cliqué.
DT_ATOMIC_OPEN = 24 => Premier événement d'ouverture
#Isp accepted with response code
DT_ISP_ACCEPTED = 29 => Confirmation d'acceptation du FAI (avec information)
#Isp deferred code
DT_ISP_DEFERRED = 30 => Email différé par FAI
#Temp new arrival replace code 12 using on production
DT_ARRIVED = 31 => BeInBox input confirmation -
Base de données de suppression
Base de données de suppression
Lorsqu'un utilisateur signale que votre courrier électronique est un spam, qu'il se désinscrit ou que l'e-mail rebondit trop de fois, nous l'ajoutons à notre liste de suppression. De cette façon, vous n'avez rien à faire. Les prochaines livraisons par e-mail seront considérées comme filtrées dans vos analyses.
Voici une description des cas spécifiques où nous ajouterons une adresse à cette liste:
L'utilisateur marque votre adresse e-mail comme spam: Nous sommes notifiés par les FAI.
Nous le marquons comme tel dans notre DB de suppression.
Ces utilisateurs sont automatiquement filtrés.
Utilisateur désinscrit: lorsque l'utilisateur se désinscrit de vos livraisons, il est automatiquement ajouté à cette base de données.
L'adresse électronique est mis en liste blacklist: Nous pouvons mettre un e-mail à votre disposition suite à une réclamation que nous avons reçue ou un e-mail que vous avez ajouté.
Email refusé: Quand un email est refusé, nous l'ajoutons à un pool partagé d'adresses refusées. Ces adresses resteront pendant 6 mois et seront ensuite supprimées au hasard. Nous attendons des retours réguliers pendant trois semaines et pas de livraison réussie. Cette partie est au-dessus de l'état de l'art. Nous avons mené quelques études et découvert qu'il offre une meilleure délivrabilité pour nos clients.
Par défaut, le tag est activé par compte. Si vous utilisez le tag, vous pouvez activer une option permettant de filtrer ces e-mails par tag plutôt que par compte..
Vous pouvez vérifier le statut d'une adresse donnée ici https://account.BeInBox.com/delivery/filters, et vous pouvez supprimer / ajouter cette adresse. -
Délivrabilité
Délivrabilité
La délivrabilité est l'action de s'assurer que vos emails se retrouvent dans une boîte de réception. Nous surveillons vos livraisons à la volée en dupliquant une partie du contenu à certaines de nos adresses de test (cela s'appelle l'adresse de semence, l'algorithme exact fait partie de notre sauce secrète). Lorsque nous détectons qu'un flux spécifique arrive en spambox, nous vous contactons habituellement (parfois nous ne le faisons pas si nous pensons que les choses reviendront à la normale par eux-mêmes, en cas de doute, contactez nous, nous aimons interagir avec nos clients).
Habituellement, un atterrissage de spam a trois sources:
Réputation IP: Cela arrive encore, même si cela devient de moins en moins important ces derniers temps. Lorsqu'une adresse IP spécifique envoie un spam, certains serveurs SMTP bloquent la source du spam au niveau IP. Les listes de blocage sont les mêmes. Usually we are notified of such an issue, but you can get in touch with us on support@BeInBox.com. Nous avons des outils à nos côtés pour détecter les blocs et agir sur eux. Si vous utilisez un cluster dédié, indiquez-nous si vous souhaitez en bénéficier.
Contenu: Pour certaines raisons, votre email déclenchera un filtre anti-spam. Par exemple, si vous êtes une pharmacie légitime envoyant un ordre de réception de Viagra du Nigeria, vous aurez du mal à vous poser dans la boîte de réception.
Rapport de spam: Lorsque trop d'utilisateurs (> 0,1%) signalent votre adresse e-mail comme spam, vos livraisons seront envoyées dans le courrier indésirable. Habituellement, les filtres anti-spam utilisent un élément de votre livraison et l'ajoutent à leur liste de blocage. -
Event API
Event API
Overview
The Event API allows users to setup web services to receive event notifications about their emails and their recipients from BeInBox.
You can enable the Event API by specifying a target URL in the ‘Event API’ section under the ‘Mail Settings’ tab. In the same section, you will be able to choose which categories you wish to enable (see the categories below).
A HTTP POST will be issued to the URL you’ve specified at a fixed interval (e.g. 5 minutes) with all the events we received in the meantime. The POST request payload describes the collection of events using the Webhooks model, and consists of a UTF8-encoded JSON array of JSON objects (events) in the following format:
[{
"category": "hard_bounce",
"date": "2011-09-02T14:39:53",
"recipient": "recipient1@example.org",
"mx": "example.com",
"tags": ["default", "tag1"],
"uid": "CC27F483098347ECB693EC7A1CAF45E9"
},
{
"category": "blocked",
"date": "2011-09-02T14:55:53",
"recipient": "recipient2@example.org",
"mx": "example.com",
"tags": ["default", "tag2"],
"uid": "A5DA637119D041BABAE316D3E908FF0A"
},
... ]
While we will make a best effort to promptly deliver all Webhooks events, messages may not arrive in order of commit. If we fail to reach the specified URL, we will retry several times over a 7-days period. This allows your services to be down for short maintenance windows and still receive all messages. Web services should respond to the POST request with a 2XX response code to indicate successful delivery. Redirects (3XX response codes) are not followed, and no further delivery attempts will be made. Server errors (5xx response codes) are treated as failures and will be retried. All other response codes will be ignored.
Event API format
The payload’s event JSON object contains the following items:
The list of event categories is:
- open: When the recipient opens an email. Counted only for HTML emails and image-view-enabled recipients.
- click: When the recipient clicks a link in your email.
- unsubscribed: When the recipient unsubscribed from your email traffic.
- bounce: When we receive a bounce (either soft or hard) for an email. Future emails to that address *will be* delivered.
- hard_bounce: Deprecated in favour of ‘bounce’.
- soft_bounce: Deprecated in favour of ‘bounce’.
- blocked: When we receive a notification from a recipient’s servers that an email of yours has been blocked for spam or content reasons. Future emails to that address *will be* delivered.
- spam_report: When a user has reported an email of yours as Spam to an ISP within our Feedback Loop. Future emails to that address will *not* be delivered.
- filtered: When we filter an email of yours and it is not sent out (due to various reasons, for example; we have received too many permanent failures for the address or it has been unsubscribed or it has sent a spam report etc).
- error: When there is an email’s structure or other internal error.
- new_failed_address: When we filter an email address after receiving too many permanent failures for it. Future emails to that address will *not* be delivered.
- filtered_address: Deprecated in favour of ‘new_failed_address’
- blacklisted_address: When a user blacklists an address from here. Future emails to that address will *not* be delivered.
- unblacklisted_address: When a user removes an address from their blacklist. Future emails to that address *will be* delivered.
- freed_address: When we remove an email address during our periodic failed addresses’ assessment and cleanup procedure (failed addresses are those we have received too many permanent failures for). Future emails to that address *will be* delivered.
Note 2: All deprecated events will stop being sent by 1st March 2013. Until then, we will send both the old (deprecated) and the new events.
Errors: If there are errors decoding your tags or other you have returned you will recieve the following error in the form of JSON:
[{
"error": "Invalid Character",
},
... ]
Authentication
You will find your unique Webhooks ‘secret key’, in the ‘Event API’ section under the ‘Mail Settings’ tab. This key is used to seed the HMAC-SHA256 algorithm. Each POST request contains header called X-BeInBox-Webhooks-Signature used to authenticate the payload. This header’s value is a 64-character hexadecimal string. To verify the Webhook request is originating from BeInBox you encode the payload with the HMAC-SHA256 algorithm (using your Webhooks ‘secret key’ as a key and SHA256 digest mode) and compare the resulting hexdigest to the X-BeInBox-Webhooks-Signature header’s value (signature).
Authentication in Python
import hmac, hashlib
def is_authenticated(your_webhooks_key, your_request_json_payload, x_BeInBox_webhooks_signature):
my_signature = hmac.new(key=your_webhooks_key, msg=your_request_json_payload, digestmod=hashlib.sha256).hexdigest()
return x_BeInBox_webhooks_signature == my_signature
Authentication in PHP:
function is_authenticated($your_webhooks_key, $your_request_json_payload, $x_BeInBox_webhooks_signature) {
$my_signature = hash_hmac("sha256", $your_request_json_payload, $your_webhooks_key);
return $x_BeInBox_webhooks_signature == $my_signature;
}
Example in PHP:
$our_webhooks_key = "xxxxxxxxxxxxxxx";
$BeInBox_signature = $_SERVER["HTTP_X_BeInBox_WEBHOOKS_SIGNATURE"];
$json_payload = file_get_contents('php://input');
# Check if payload is valid
if($BeInBox_signature != hash_hmac("sha256", $json_payload, $our_webhooks_key)) {
throw exception("Invalid payload according to our webhooks key");
}
$events = json_decode($json_payload);
foreach($events as $event) {
switch($event["category"]) {
case "open":
event_open($event);
break;
case "click":
event_click($event);
break;
case "unsubscribed": event_unsubscribe($event);
break;
case "hard_bounce":
event_hard_bounce($event);
break;
case "soft_bounce":
event_soft_bounce($event);
break;
case "blocked":
event_blocked($event);
break;
case "spam_report":
event_spam_report($event);
break;
case "filtered":
event_filtered($event);
break;
case "error":
event_error($event);
break;
default:
throw exception("Invalid category");
}
} - open: When the recipient opens an email. Counted only for HTML emails and image-view-enabled recipients.