Je crée un système de base permettant aux utilisateurs de répondre à un fil sur le site Web par courrier électronique. Cependant, la plupart des clients de messagerie incluent le texte des courriels précédents dans leurs emails de réponse. Ce texte est indésirable sur le site Web.
Y a-t-il une manière fiable dans laquelle je ne peux extraire que le nouveau message, sans savoir avant les courriels précédents? J'utilise l'email code> Classe de Python. P>
Content-Type: text/plain; charset=ISO-8859-1 test message! This is the part I want. On Thu, Mar 24, 2011 at 3:51 PM, <test@test.com> wrote: > Hi! > > Herman just posted a comment on the website: > > > From: Herman > "Hi there! I might be interested" > > > Regards, > The Website Team > http://www.test.com >
5 Réponses :
Le formatage des réponses par courrier électronique dépend des clients. Il n'y a pas de moyen réalité d'extraire le message le plus récent sans risque de supprimer trop ou pas assez. P>
Cependant, un moyen courant de marquer des citations est en les préfixant avec Mais le > code> de sorte que les lignes commençant par ce caractère - surtout s'il y a plusieurs à la fin ou au début de l'email - sont susceptibles d'être citations. P>
sur Thu, Mar 24, 2011 à 15h51, : code> juste avant qu'un devis puisse indiquer qu'il appartient à la citation, vous ne pouvez pas savoir que, à coup sûr, cela pourrait également faire partie du nouveau message et le colon est juste une faute de frappe ». d . code> (sur les claviers allemand : code> est shift +. code>). p>
Il est dommage qu'il n'y ait pas de manière fiable réelle, mais les idées que vous avez données ont été prouvées utiles, en particulier le point sur les claviers allemands - merci.
Je serais d'accord il n'y a pas de manière fiable et il ne devrait vraiment pas y avoir, mais chaque client diffère. Nous expérimenons à Cloudmailin avec un moyen d'inclure cette analyse par défaut, mais nous n'avons rien qui attrape tout ce que nous voulons.
Je pense que cela devrait fonctionner
La réponse @lamrin Tawsras a donné fonctionnera pour analyser le texte avant l'expression de date Gmail uniquement si une correspondance est trouvée, sinon une erreur sera lancée. De plus, il n'est pas nécessaire de rechercher le message complet pour plusieurs expressions de date, vous avez juste besoin du premier trouvé. Par conséquent, je affinerais sa solution pour utiliser re.search ( ) code> :
Essayez ceci:
import re
def deleteForwardedMessagesFromMessage(message):
nextMessage = re.split(r"\n.*[\,].*\<\s*.*>", message)[0]
print(nextMessage)
return nextMessage
Essayez ceci fonctionne pour les emails français / anglais: p>
sur Thu, Mar 24 mars 2011 à 15h51, test@test.com a écrit: P> blockQuote>
Le mer. 28 AVR. 2021 à 10:03, test.test@orange.com A Écrit: P> blockQuote>
regex = r '\ w + \ s + \ w + [.] \ s + (\ W + \ s + \ d + | \ d + \ s + \ w +) [.] \ s + \ d + \ s + (\ w + (\ w ) \ s + \ d + [:] \ d + (\ s + \ w +)? ,? \ s + (\ s * \ s * [a-za-z] [._-]? [A-ZA -Z] em> [@] \ w + [.]? \ W {2,3} \ s *> ?;? \ S *) (un écrit | a écrit) \ s *: ' p>