Obtenir le message électronique que la personne vient d'écrire, à l'exclusion de tout texte cité
Il y a deux pré-existantes des questions sur le site.
Un pour Python, un pour Java.
- Java Comment faire pour supprimer le texte cité à partir d'un courriel et ne montrer que le nouveau texte
- Python Moyen fiable pour obtenir seulement le texte de l'email, à l'exclusion de ceux-ci
Je veux être capable de faire à peu près exactement la même (en PHP). J'ai créé un proxy de messagerie, où deux personnes peuvent avoir une correspondance ensemble en envoyant un courriel à une adresse e-mail unique.
Le problème que je viens de trouver, cependant, est que quand une personne reçoit un e-mail et frappe répondre, j'ai du mal à saisir exactement le texte qu'il a écrit et jeter le texte cité à partir de la précédente correspondance.
J'essaie de trouver une solution qui fonctionne pour les e-mails HTML et texte brut à l'e-mail, parce que je suis en envoyant à la fois.
J'ai aussi la possibilité, s'il permet d'insérer quelques <*****RESPOND ABOVE HERE*******>
tag si nécessaire dans les e-mails sens que je peux tout jeter ci-dessous.
Ce que me recommandez-vous? Toujours ajouter cette balise HTML de copie et de copie en clair puis saisir tout ce qui précède?
Je voudrais encore être laissés avec le scénario de savoir comment chaque client de messagerie crée la réponse. Parce que par exemple Gmail:
On Wed, Nov 2, 2011 at 10:34 AM, Message Platform <35227817-7cfa-46af-a190-390fa8d64a23@dev.example.com> wrote:
## In replies all text above this line is added to your message conversation ##
Des suggestions ou des recommandations de meilleures pratiques?
Ou devrais-je viens de prendre les 50 plus populaire des clients de messagerie, et de commencer à créer une Regex pour chaque. Ensuite, pour chacun de ces clients, aussi un bizallion des paramètres régionaux différents, puisque je suppose que les paramètres régionaux de l'utilisateur aura également une influence sur ce qui est ajouté.
Ou devrais-je simplement supprimer la ligne précédente toujours si elle contient une date?.. etc
source d'informationauteur Layke
Vous devez vous connecter pour publier un commentaire.
Il y a beaucoup de bibliothèques qui peuvent vous aider à extraire la réponse/la signature d'un message:
J'ai aussi lu que MailGun offre un service à analyser les e-mails entrants et POSTE son contenu d'une URL de votre choix. Il sera automatiquement bande citation du texte de vos courriels: http://blog.mailgun.com/handle-incoming-emails-like-a-pro-mailgun-api-2-0/
Espère que ça aide!
Malheureusement, vous êtes dans un monde de mal si vous voulez essayer de nettoyer les e-mails méticuleusement (en supprimant tout ce qui n'est pas partie de l'e-mail de réponse elle-même). Le idéal solution serait, comme vous le suggérez, écrire regex pour chaque client de messagerie populaires/service, mais c'est une jolie somme ridicule de travail, et je vous recommande être paresseux et stupide à ce sujet.
Assez intéressant, même Facebook ingénieurs ont des difficultés avec ce problème, et Google a déposé un brevet sur une méthode pour "Détecter texte cité".
Il y a trois solutions que vous pourriez trouver acceptable:
Le Laisser Seul
La première solution est de simplement laisser tout dans le message. La plupart des clients de messagerie de le faire, et personne ne semble s'en plaindre. Bien sûr, en ligne, systèmes de messagerie (comme Facebook 'Messages') look assez bizarre si ils ont création de style réponses. Une façon détournée de faire de ce travail est d'accord pour rendre le message avec toute cité lignes s'est effondré, et d'inclure un petit lien pour "élargir texte cité'.
Séparée de la Réponse du Message ancien
La deuxième solution, comme vous le mentionnez, est de mettre une délimitation message en haut de vos messages, comme
--------- please reply above this line ----------
puis la bande de la ligne et rien en dessous lors du traitement des réponses. De nombreux systèmes de ce faire, et ce n'est pas la pire chose dans le monde... mais il ne faire à votre email look plus "automatisé" et moins personnels (à mon avis).Bande De Hors Texte Cité
La dernière solution est tout simplement de la bande de toute nouvelle ligne commençant par un
>
qui est, sans doute, une cité de la ligne de l'e-mail de réponse. La plupart des clients de messagerie utilisent cette méthode d'indiquer le texte cité. Voici quelques regex (en PHP) qui permettrait de faire ça:Il y a quelques problèmes à l'aide de cette méthode plus simple:
>
de sorte que vous serez en enlevant les guillemets.On [date], [person] said
. Cette ligne est difficile à retirer, car il n'est pas formaté la même chez les différents clients de messagerie, et il est peut-être une ou deux lignes au-dessus de la cité texte supprimé. J'ai mis en œuvre cette méthode de détection, avec un succès modéré, dans mon PHP Imap bibliothèque.Bien sûr, l'essai est la clé, et les compromis pourrait être en vaut la peine pour votre système. YMMV.
Éventuellement utile: quotequail est une bibliothèque Python qui permet d'identifier le texte cité dans les e-mails
Autant que je sache, (standard) emails de citer l'ensemble du texte par l'ajout d'une ">" en face de chaque ligne. Que vous pourriez bande en utilisant strstr(). Sinon, avez-vous trie de port exemple Java à php? Il n'est rien d'autre que de la Regex.
Même des pages comme Github et Facebook n'ont ce problème.
Juste une idée: Vous avez le texte qui a été envoyé, de sorte que vous pouvez chercher et de le supprimer et de supplémentaires de bruit environnant de la réponse. Il n'est pas anodin, parce que plus de sauts de ligne, des éléments HTML, ">" les caractères sont ajoutés par le client de messagerie de l'application.
L'expression régulière est certainement mieux si cela fonctionne, parce que c'est simple et à la perfection des coupes dans le texte original, mais si vous trouvez que souvent, il ne fonctionne pas, cela peut être une solution de repli méthode.
https://mailgun.com propose de répondre extaction (retrait cité contenu) et aussi la signature de l'extraction, basée sur le cloud ser. Je suis encore à l'essai, mais semble prometteur.
Je suis d'accord que le texte cité ou la réponse est simplement un TEXTE. Donc il n'y a pas de moyen précis pour aller la chercher. De toute façon, vous pouvez utiliser regexp remplacer comme ça.
Test
https://regex101.com/r/xO8nI1/2