Correction automatique des liens HTTPS externes dans les newsletters

Utiliser des outils emailing en HTTPS est nécessaire pour une bonne délivrabilité. Afin de sécuriser les liens view on line - souvent très utilisés par les abonnés - mais aussi pour la bonne réception en messagerie (emails bloqués, images non-affichées, réputation de l'expéditeur...).

Acymailing peut déjà prendre en compte l'éventuel HTTPS de vos outils (une option à activer dans l'administation), ce qui permet d'éviter certains oublis depuis l'outil lui-même.

Mais des contenus externes sont parfois incluent dans les newsletters (images, liens...), pas toujours en HTTPS. Un seul contenu non-sécurisé suffira alors à briser le HTTPS de votre newsletter (la partie verte de l'URL deviendra noire et un icône d'information apparaît, selon les navigateurs).

Pour conserver un HTTPS bien vert dans vos outils - et éviter les messages angoissants des navigateurs - tous vos contenus doivent être en HTTPS.

Or en contexte de mass sending, ou d'utilisation industrielle des outils, les collaborateurs utilisent parfois Filezilla, Dreamweaver, Notepad... Ils codent eux-mêmes les newsletters, copient-collent des liens, les écrivent manuellement, reçoivent des templates parfois doûteux de leurs partenaires, etc... Ainsi des liens non-HTTPS peuvent atterir dans les newsletters.

Parfois cela n'est pas évitable autrement qu'en rappelant aux collaborateurs les bonnes pratiques (rapatrier les images externes sur un serveur HTTPS, ne pas inclure de lien non-HTTPS...).

Mais dans d'autres cas, l'utilisation de contenus externes est justifiée si les serveurs utilisés sont eux-mêmes en HTTPS (gain de temps, travail collaboratif, économie d'espace disque...). Des erreurs peuvent alors persister selon les usages (écriture manuelle des liens, sites mis à jour, favoris mal enregistrés dans les outils tiers, navigateurs, serveurs FTP, environnements de travail...).

Si les sites HTTPS récurrents sont bien identifiés, vous pouvez corriger automatiquement les erreurs les plus courantes via une tâche programmée. Avec par exemple ce type de code SQL :

UPDATE #_acymailing_mail SET body = REPLACE(body , 'http://www.SiteInterne' , 'https://SiteInterne') ;
UPDATE #_acymailing_mail SET body = REPLACE(body , 'https://www.SiteInterne' , 'https://SiteInterne') ;
UPDATE #_acymailing_mail SET body = REPLACE(body , 'http://SiteInterne' , 'https://SiteInterne') ;

UPDATE #_acymailing_mail SET body = REPLACE(body , 'http://www.SiteExterne1' , 'https://SiteExterne1') ;
UPDATE #_acymailing_mail SET body = REPLACE(body , 'https://www.SiteExterne1' , 'https://SiteExterne1') ;
UPDATE #_acymailing_mail SET body = REPLACE(body , 'http://SiteExterne1' , 'https://SiteExterne1') ;

UPDATE #_acymailing_mail SET body = REPLACE(body , 'http://www.SiteExterne2' , 'https://SiteExterne2') ;
UPDATE #_acymailing_mail SET body = REPLACE(body , 'https://www.SiteExterne2' , 'https://SiteExterne2') ;
UPDATE #_acymailing_mail SET body = REPLACE(body , 'http://SiteExterne2' , 'https://SiteExterne2') ;


UPDATE #_acymailing_url SET name = REPLACE(name , 'http://www.SiteInterne' , 'https://SiteInterne'), url = REPLACE(url , 'http://www.SiteInterne' , 'https://SiteInterne') ;
UPDATE #_acymailing_url SET name = REPLACE(name , 'https://www.SiteInterne' , 'https://SiteInterne'), url = REPLACE(url , 'https://www.SiteInterne' , 'https://SiteInterne') ;
UPDATE #_acymailing_url SET name = REPLACE(name , 'http://SiteInterne' , 'https://SiteInterne'), url = REPLACE(url , 'http://SiteInterne' , 'https://SiteInterne') ;

UPDATE #_acymailing_url SET name = REPLACE(name , 'http://www.SiteExterne1' , 'https://SiteExterne1'), url = REPLACE(url , 'http://www.SiteExterne1' , 'https://SiteExterne1') ;
UPDATE #_acymailing_url SET name = REPLACE(name , 'https://www.SiteExterne1' , 'https://SiteExterne1'), url = REPLACE(url , 'https://www.SiteExterne1' , 'https://SiteExterne1') ;
UPDATE #_acymailing_url SET name = REPLACE(name , 'http://SiteExterne1' , 'https://SiteExterne1'), url = REPLACE(url , 'http://SiteExterne1' , 'https://SiteExterne1') ;

UPDATE #_acymailing_url SET name = REPLACE(name , 'http://www.SiteExterne2' , 'https://SiteExterne2'), url = REPLACE(url , 'http://www.SiteExterne2' , 'https://SiteExterne2') ;
UPDATE #_acymailing_url SET name = REPLACE(name , 'https://www.SiteExterne2' , 'https://SiteExterne2'), url = REPLACE(url , 'https://www.SiteExterne2' , 'https://SiteExterne2') ;
UPDATE #_acymailing_url SET name = REPLACE(name , 'http://SiteExterne2' , 'https://SiteExterne2'), url = REPLACE(url , 'http://SiteExterne2' , 'https://SiteExterne2') ;

Attention : le corps des newsletters est stocké dans la table #_acymailing_mail (champ body), mais pensez à inclure également la table #_acymailing_url dans votre code (à partir du 3ème paragraphe de l'exemple ci-dessus). En effet Acy copie dans cette table les liens saisis via l'éditeur, à des fins statistiques notamment. Et dans cette table, deux champs peuvent potentiellement contenir des erreurs (name et url, ici tous deux corrigés).