~

Publier sur un blog WordPress par email

WordPress propose d’excellentes applications mobiles, mais je les trouve paradoxalement trop lourdes pour poster quelque chose rapidement. Une petite pensée, toute spontanée. Alors qu’envoyer un mail me semble plus simple. Que ce soit depuis un mobile, un webmail, ou un client desktop.

Après une tentative infructueuse par le passé, je me suis de nouveau penché sur la question.

Voici la procédure à suivre.

Première étape, créer une adresse mail dédiée* qui servira de boîte de réception. Choisissez de préférence une adresse qui n’a pas de sens, comme kdgfl4561dee2@xmail.com.

Ensuite, connectez-vous à l’interface d’administration de votre blog, et rendez-vous sur les options d’écritures :

http://mon.blog/wp-admin/options-writing.php

En bas de la page, remplissez le formulaire Envoi d’article par e-mail :

Serveur de messagerie : L’URL et le port du serveur POP3 de votre fournisseur (Pour Gmail : ssl://pop.gmail.com et Port 995)

Identifiant : L’identifiant de votre compte mail (xxx@gmail.com)

Mot de passe : Le mot de passe de votre compte mail

Catégorie par défaut des articles envoyés par e-mail : A votre convenance

Puis valider en cliquant sur Enregistrer les modifications.

Voilà, votre blog est configuré.

Il est maintenant temps de tester. Avec le compte mail de votre choix, envoyez un email à l’adresse créée précédemment. L’objet sera le titre de l’article, et le contenu du mail… le contenu de l’article !

Vérifiez que votre compte a bien reçu l’email, mais ne le lisez surtout pas. Retournez sur l’interface d’administration de votre blog. Rien n’a changé, aucun nouvel article. C’est normal. Il faut indiquer à votre blog d‘aller lire les mails pour se mettre à jour.

Dans votre navigateur, rendez-vous à l’adresse suivante :

http://mon.blog/wp-mail.php

Si tout se passe bien, un message apparaît et vous dit qu’un mail a été lu et supprimé. Sinon… Je n’ai pas eu de soucis, difficile de vous en dire plus, mais vérifiez bien les informations rentrées plus tôt.

Retournez alors sur l’interface d’administration de votre blog. Un nouvel article devrait avoir fait son apparition. Mais au statut En attente.

Pour résoudre ce petit désagrément, deux solutions s’offrent à vous.

La première, c’est de créer un compte utilisateur sur votre blog (via http://mon.blog/wp-admin/user-new.php) en renseignant comme adresse mail l’adresse que vous allez utiliser pour envoyer vos posts, et de mettre cet utilisateur en Auteur ou Administrateur. Ainsi, les articles seront automatiquement publiés.

La seconde solution est un peu plus complexe, moins sécurisée, mais permettra de publier des articles depuis n’importe qu’elle adresse mail (possiblement des spammeurs donc).

Pour cela, allez dans votre répertoire d’installation du blog, éditez le fichier wp-mail.php et ligne 156 (WordPress 3.4.2), remplacez :

// Set $post_status based on $author_found and on author’s publish_posts capability
if ( $author_found ) {
$user = new WP_User($post_author);
$post_status = ( $user->has_cap(‘publish_posts’) ) ? ‘publish’ : ‘pending’;
} else {
// Author not found in DB, set status to pending. Author already set to admin.
$post_status = ‘pending’;
}

par

// Automatically publish all mails
$post_status = ‘publish’;

Avec cette solution, tous les emails reçus sur votre compte mail dédié seront automatiquement convertis en articles publiés (même le spam).

Cela fait, il nous reste une dernière chose à faire : automatiser la lecture des mails depuis le blog.

Comme nous l’avons vu un peu plus tôt, pour que le blog aille lire les nouveaux mails, il faut lui signifier en allant sur la page http://mon.blog/wp-mail.php. Pas très pratique lorsque l’on recherche spontanéité et automatisation.

Là encore, deux solutions.

La première, plus simple à mettre en place, et la qui sera la seule possible si votre hébergeur ne vous offre pas la possibilité de mettre en place des taches Cron.

Allez dans l’éditeur de thème de WordPress (http://mon.blog/wp-admin/theme-editor.php), et, de préférence dans le footer.php, collez le code suivant :

 <iframe src= »http://mon.blog/wp-mail.php » name= »mailiframe » width= »0″ height= »0″ frameborder= »0″ scrolling= »no » title= » »></iframe>

A chaque chargement d’une page de votre blog, la page de rechargement des emails sera appelée, et les vos articles seront alors publiés. Le tout de manière transparente : votre thème ne sera visuellement pas modifié. Mais c’est une méthode très impropre (les iframe c’est le cancer), à éviter. Si vous souhaitez creuser, d’autres solutions sont possible, mais plus complexes.

La deuxième solution, qui est vraiment à privilégier mais qui nécessite de pouvoir mettre en place des tâches Cron sur son serveur et d’ajouter cette ligne dans votre Crontab :

*/30 * * * * wget -N http://mon.blog/wp-mail.php

Ou une autre, encore meilleure :

*/30 * * * * php /chemin/absolu/vers/votre/blog/sur/votre/serveur/wp-mail.php

Ce qui aura pour effet de vérifier vos mails toutes les 30 minutes.

Voilà, tout est en place, il ne vous reste plus qu’à faire quelques essais et à profiter ! 🙂

Source.

* Attention, le fournisseur de votre adresse mail dédiée devra vous fournir un accès POP. Pour Gmail, cela n’est pas automatique, il faut l’activer.