דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. חיתוך מענה במייל ב mailgun

חיתוך מענה במייל ב mailgun

מתוזמן נעוץ נעול הועבר תכנות
12 פוסטים 4 כותבים 202 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מנצפךמ מנותק
    מנצפךמ מנותק
    מנצפך
    כתב ב נערך לאחרונה על ידי
    #1

    אני משתמש בmailgun בכדי לנתח אוטומטית תגובות משתמשים, המשתמש מקבל מייל ועונה עליו.
    אני צריך לקחת את הטקסט שהוא ענה.

    הבעיה היא שהמייל חוזר יחד עם הטקסט שנשלח בהתחלה, ואין לי דרך לדעת איפה התגובה נגמרת ואיפה מתחיל ציטוט של המייל הראשון.

    מכירים פתרון לזה?

    תגובה 1 תגובה אחרונה
    0
    • שואףש מנותק
      שואףש מנותק
      שואף
      כתב ב נערך לאחרונה על ידי
      #2

      לקח לי המון המון זמן למצוא לזה פיתרון
      אתה כותב בPHP? יש לי פונקציה מוכנה.

      
      function traitBody($body, $nolinks = true)
      {
      	$body = html_entity_decode($body);
      	$body = quoted_printable_decode($body);
      
      	$no_quote = cutFrom($body, '<div class="gmail_quote"');
      	$body = strip_tags($no_quote) ? $no_quote : $body;
      	$no_signature = cutFrom($body, 'class="gmail_signature"');
      	$body = strip_tags($no_signature) ? $no_signature : $body;
      	$no_default = cutFrom($body, '<(?:span|div) class="gmail_default"');
      	$body = strip_tags($no_default) ? $no_default : $body;
      
      	$body = cutFrom($body, '-- <br />');
      	$body = cutFrom($body, '______________________________________');
      	$body = cutFrom($body, '<div id="composer_signature"');
      	$body = cutFrom($body, '<div id="mt-signature"');
      	$body = cutFrom($body, '<div class="gmail_extra"');
      	$body = cutFrom($body, '<div class="gmail_chip');
      	$body = cutFrom($body, '<!-- Email Footer : BEGIN -->');
      	$body = cutFrom($body, 'Content-Type: application');
      	$body = cutFrom($body, "Message d'origine");
      	$body = cutFrom($body, "This is a multipart message");
      	$body = cutFrom($body, "From:");
      	$body = cutFrom($body, "Encoding: quoted-printable", true);
      	$body = cutFrom($body, "Content-transfer-encoding:8bit", true);
      	$body = cutFrom($body, "Content-Transfer-Encoding: 8bit", true);
      	$body = cutFrom($body, "נשלח באמצעות מערכת");
      	$body = cutFrom($body, "Sent with");
      
      	$body = pregReplace($body, '<img.*>', ' ');
      	$body = pregReplace($body, '<br/?>', ' ');
      	$body = pregReplace($body, '<div', ' <div');
      	$body = pregReplace($body, '<span', ' <span');
      	$body = pregReplace($body, '\r|\n', ' ');
      
      	if ($nolinks) {
      		$body = pregReplace($body, '<a [^>]>http.*</a>', ' link ', 'U');
      		$body = pregReplace($body, '>[^<]*@[^>]*<', ' mail ');
      		$body = pregReplace($body, '[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+', ' mail ');
      	}
      	$body = pregReplace($body, '<style.*/style>');
      	$body = pregReplace($body, '<script.*/script>');
      
      	$body = strip_tags($body);
      	$body = htmlspecialchars_decode($body, ENT_QUOTES);
      	$body = pregReplace($body, '<|>');
      	if ($nolinks) {
      		$body = pregReplace($body, '((\w+:\/\/\S+)|(\w+[\.:]\w+\S+))[^\s,\.]', ' link ', '');
      	}
      
      	return $body;
      }
      
      
      function pregExtract($string, $pattern)
      {
      	return preg_match('#' . str_replace('~', '(.*)', $pattern) . '#is', $string, $match) ? $match[1] : '';
      }
      
      function pregReplace($string, $pattern, $subject = '', $options = 'U')
      {
      	if (is_array($pattern))
      		$pattern = implode('|', $pattern);
      	$pattern = '#' . $pattern . '#is' . $options;
      	return preg_replace($pattern, $subject, $string);
      }
      
      function cutFrom($from, $string, $end = false)
      {
      	$pos = strpos($from, $string);
      	if ($end)
      		$return = $pos ? substr($from, $pos + strlen($string)) : $from;
      	else
      		$return = $pos ? substr($from, 0, $pos) : $from;
      	return $return;
      }
      

      מקווה שיעזור לך

      ליצירת קשר: admin@i-call.me

      הידד! גישה למייל גם בלי מחשב ואינטרנט!

      תגובה 1 תגובה אחרונה
      2
      • yossizY מחובר
        yossizY מחובר
        yossiz
        כתב ב נערך לאחרונה על ידי yossiz
        #3

        @מנצפך @שואף אני לא מבין אתכם. שירות של חיתוך ציטוטים מובנה ב-mailgun!

        הנה דוגמה לאובייקט שאני מקבל מהם:

        {
          "recipient": "XXX@XXX",
          "sender": "XXX@XXX",
          "subject": "Re:",
          "from": "XXX@XXX",
          ...
          "To": "XXX@XXX",
          "Content-Type": "multipart/alternative; boundary=\"00000000000061c4fd059b386ec6\"",
          ...
          "body-plain": "hmm...\r\n\r\nOn Fri, 3 Jan 2020 at 10:51, XXX@XXX wrote:\r\n\r\n>testy test\r\n",
          "body-html": "<div dir=\"ltr\"><div>hmm...</div></div><br><div class=\"gmail_quote\"><div dir=\"ltr\" class=\"gmail_attr\">On Fri, 3 Jan 2020 at 10:51, XXX@XXX wrote:<br></div><blockquote class=\"gmail_quote\" style=\"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex\">testy test</blockquote></div>\r\n",
          "stripped-text": "hmm...",
          "stripped-html": "<html><head></head><body><div dir=\"ltr\"><div>hmm...</div></div><br></body></html>"
        }
        

        שימו לב, המאפיינים stripped-text ו-stripped-html מכילים את המענה בלי הציטוט של המייל הקודם. ב-body-plain ו-body-html מקבלים את הכל בכל כולל הציטוט.

        ועיין עוד:

        • https://stackoverflow.com/a/48055468
        • https://www.mailgun.com/blog/open-sourcing-our-email-signature-parsing-library/
        • https://github.com/mailgun/talon

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        מנצפךמ תגובה 1 תגובה אחרונה
        4
        • שואףש מנותק
          שואףש מנותק
          שואף
          כתב ב נערך לאחרונה על ידי
          #4

          @yossiz איך הוא יודע לחתוך את זה?

          ליצירת קשר: admin@i-call.me

          הידד! גישה למייל גם בלי מחשב ואינטרנט!

          yossizY תגובה 1 תגובה אחרונה
          1
          • yossizY מחובר
            yossizY מחובר
            yossiz
            השיב לשואף ב נערך לאחרונה על ידי yossiz
            #5

            @שואף אפשר לקרוא סקירה כללית בלינק השני שהבאתי. או את קוד המקור בלינק השלישי. או את קוד המקור של אחד מהספרייות האחרות בלינק הראשון...
            בקיצור, צירוף של heuristics ולימוד מכונה

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            תגובה 1 תגובה אחרונה
            2
            • WWWW מנותק
              WWWW מנותק
              WWW
              כתב ב נערך לאחרונה על ידי
              #6

              השאלה הגדולה היא: למה עדיין אין תקן לסימון נורמלי של טקסט מצוטט?
              הזיהוי האוטומטי של ג'מייל, ג"כ לפעמים לא עובד נכון.

              WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

              תגובה 1 תגובה אחרונה
              1
              • מנצפךמ מנותק
                מנצפךמ מנותק
                מנצפך
                השיב לyossiz ב נערך לאחרונה על ידי
                #7

                @yossiz
                מוזר שלא שמתי לב לזה.
                בכל אופן מה שזה עושה, זה רק לחתוך שורות שמתחילות עם הסימון ">"

                עדיין הוא מוסיף למייל שורה "בתאריך..." (אולי זה הגדרה במייל שלי?)

                yossizY תגובה 1 תגובה אחרונה
                1
                • yossizY מחובר
                  yossizY מחובר
                  yossiz
                  השיב למנצפך ב נערך לאחרונה על ידי
                  #8

                  @מנצפך אצלי זה עובד טוב. אולי כי אצלי זה באנגלית?

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                  תגובה 1 תגובה אחרונה
                  0
                  • מנצפךמ מנותק
                    מנצפךמ מנותק
                    מנצפך
                    כתב ב נערך לאחרונה על ידי
                    #9

                    @yossiz
                    אכן תלוי בשפה.
                    אז כנראה שכל מה שהוא עושה זה להוריד את השורה האחרונה אם היא מתחילה ב
                    on
                    אותו דבר אפשר לעשות שאם היא מתחילה ב"בתאריך"
                    כמובן שאפשר להוסיף עוד בדיקות בשביל לא לחתוך שורות חשובות.
                    (לדוגמה, השורה מכילה סימן @, השורה מסתיימת בנקודותיים. ועוד.)

                    yossizY תגובה 1 תגובה אחרונה
                    1
                    • yossizY מחובר
                      yossizY מחובר
                      yossiz
                      השיב למנצפך ב נערך לאחרונה על ידי yossiz
                      #10

                      @מנצפך קוד המקור הוא פה: https://github.com/mailgun/talon/blob/d9ed7cc6d10c42894536aeb34073ff3fd036de2c/talon/quotations.py#L27-L94
                      ואין תמיכה בעברית. אפשר לפתוח issue אבל אין הרבה פעילות... לדוגמה https://github.com/mailgun/talon/issues/157 פתוח כבר שנתיים.
                      עוד יותר יהיה טוב לפתוח pull request ובמקביל לטרטר את התמיכה...

                      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                      תגובה 1 תגובה אחרונה
                      2
                      • מנצפךמ מנותק
                        מנצפךמ מנותק
                        מנצפך
                        כתב ב נערך לאחרונה על ידי
                        #11

                        @yossiz שאפו!
                        השאלה היא האם יספיק לעשות את החלוקה לפי איך שכתבתי קודם, או שיש עוד פרמטרים שלא הבאתי בחשבון.
                        כי אין לי את היכולת לקרוא שם את כל הקוד.

                        yossizY תגובה 1 תגובה אחרונה
                        0
                        • yossizY מחובר
                          yossizY מחובר
                          yossiz
                          השיב למנצפך ב נערך לאחרונה על ידי
                          #12

                          @מנצפך נראה לי שב-HTML יש זיהוי יותר טוב של הציטוטים. שם זה אמור לעבוד גם בעברית.
                          כנראה שהם לא מספיק חכמים לקחת את מיקום הציטוטים מה-HTML ולהחל אותו על הטקסט ג"כ.

                          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                          תגובה 1 תגובה אחרונה
                          2

                          בא תתחבר לדף היומי!
                          • התחברות

                          • אין לך חשבון עדיין? הרשמה

                          • התחברו או הירשמו כדי לחפש.
                          • פוסט ראשון
                            פוסט אחרון
                          0
                          • דף הבית
                          • קטגוריות
                          • פוסטים אחרונים
                          • משתמשים
                          • חיפוש
                          • חוקי הפורום