Blame view

common/components/parsers/MailParser.php 3.79 KB
02359b64   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
   */
  
bedb55fe   Mihail   fixed Image class
9
  namespace common\components\parsers;
02359b64   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);
      }
  }