Bonjour et merci pour votre aide.
J'ai essayé beaucoup de chose : une chose est sûr c'est un problème bien vicelard (je souris mais en réalité j'en pleure... )
Première chose (qui de toute façon ne pouvait pas faire de mal) j'ai migré la BDD d'une "perso" à une "pro" chez OVH.
Mon site est un site Joomla (3.6),
Avant ce problème mon site utilisait l'extension MySQLi puis j'ai essayé PDO, le soucis n'a pas évolué.
J'ai tenté une insertion de données via un script PHP tout simple avec ton exemple puis dans ma table de newsletter avec les 100k de données : tout est fonctionnel, rien n'est tronqué.
Tout m'indique que le problème serait finalement applicatif (contrairement à ce que je croyais) ; ce que j'ai dû mal à comprendre au vu de la petitesse / simplicité de mon code, lu et relu à chaud et à froid.
D'autant qu'il est fonctionnel en local, la version de PHP est la même, seule la version de MySQL diffère (OVH : 5.5 ; local : 5.7).
Je n'ai rien trouvé sur internet qui concerne ce bug sur Joomla. J'ai commencé à fouillé dans le code source du constructeur de requête fourni par Joomla mais je vais également essayer de me rapprocher de la communauté.
Code:
public static function addAcymailingMail($body) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$user = JFactory::getUser();
setlocale(LC_TIME, 'fr_FR.utf8','fra');
$date = strftime("%B %Y");
$subject = $db->quote("Mon super titre... ($date)");
$body = $db->quote($body);
$altbody = $db->quote('');
$published = 0;
$created = time();
$userid = $user->id;
$tempid = 0;
$key = $db->quote(self::acymailing_generateKey(8));
$sentby = $user->id;
$columns = array('subject', 'body', 'altbody', 'published', 'created', 'userid', 'tempid', 'key', 'sentby');
$values = array($subject, $body, $altbody, $published, $created, $userid, $tempid, $key, $sentby);
$query->insert($db->quoteName('#__acymailing_mail'))
->columns($db->quoteName($columns))
->values(implode(',', $values));
$db->setQuery($query);
$db->execute();
return $db->insertid();
}