Blame view

backend/components/parsers/MailParser.php 3.79 KB
5c2732df   Mihail   add mail parser a...
1
2
3
4
5
6
7
8
  <?php
  /**
   * Created by PhpStorm.
   * User: Cibermag
   * Date: 01.09.2015
   * Time: 10:53
   */
  
67d432ac   Mihail   final upload form...
9
  namespace backend\components\parsers;
5c2732df   Mihail   add mail parser a...
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
  
  
  class MailParser {
      public static function requestAction(){
          $hostname = '{imap.gmail.com:993/imap/ssl/novalidate-cert/norsh}Inbox';
          $username = 'сюда твой логин';
          $password = 'сюда твой пароль';
  
          /* try to connect */
          $inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
  
  
          $emails = imap_search($inbox,'FROM forallthings');
  
          /* if emails are returned, cycle through each... */
          /* if emails are returned, cycle through each... */
          if($emails) {
  
              /* begin output var */
              $output = '';
  
              /* put the newest emails on top */
              rsort($emails);
  
  
              foreach ($emails as $email_number) {
  
                  /* get information specific to this email */
                  $overview = imap_fetch_overview($inbox, $email_number, 0);
                  $message = imap_fetchbody($inbox, $email_number, 2);
                  $structure = imap_fetchstructure($inbox, $email_number);
  
  
  
  
                  $attachments = array();
                  if (isset($structure->parts) && count($structure->parts)) {
                      for ($i = 0; $i < count($structure->parts); $i++) {
                          $attachments[$i] = array(
                              'is_attachment' => false,
                              'filename' => '',
                              'name' => '',
                              'attachment' => '');
  
                          if ($structure->parts[$i]->ifdparameters) {
                              foreach ($structure->parts[$i]->dparameters as $object) {
                                  if (strtolower($object->attribute) == 'filename') {
                                      $attachments[$i]['is_attachment'] = true;
                                      $attachments[$i]['filename'] = $object->value;
                                  }
                              }
                          }
  
                          if ($structure->parts[$i]->ifparameters) {
                              foreach ($structure->parts[$i]->parameters as $object) {
                                  if (strtolower($object->attribute) == 'name') {
                                      $attachments[$i]['is_attachment'] = true;
                                      $attachments[$i]['name'] = $object->value;
                                  }
                              }
                          }
  
                          if ($attachments[$i]['is_attachment']) {
                              $attachments[$i]['attachment'] = imap_fetchbody($inbox, $email_number, $i + 1);
                              if ($structure->parts[$i]->encoding == 3) { // 3 = BASE64
                                  $attachments[$i]['attachment'] = base64_decode($attachments[$i]['attachment']);
                              } elseif ($structure->parts[$i]->encoding == 4) { // 4 = QUOTED-PRINTABLE
                                  $attachments[$i]['attachment'] = quoted_printable_decode($attachments[$i]['attachment']);
                              }
                          }
                      } // for($i = 0; $i < count($structure->parts); $i++)
                  } // if(isset($structure->parts) && count($structure->parts))
  
  
                  if (count($attachments) != 0) {
  
  
                      foreach ($attachments as $at) {
  
                          if ($at['is_attachment'] == 1) {
                              //die(__DIR__);
                              file_put_contents('test.csv', $at['attachment']);
  
                          }
                      }
  
                  }
  
              }
  
              // echo $output;
          }
          /* close the connection */
          imap_close($inbox);
      }
  }