Blame view

backend/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
   */
  
36b545ad   Mihail   final upload form...
9
  namespace backend\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);
      }
  }