PluginProbe
Email Log / 2.61
Email Log v2.61
2.63 2.4.8 2.4.9 2.6 2.61 2.62 trunk 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.8.1 0.9 0.9.1 0.9.2 1.1 1.5 1.5.1 1.5.2 1.5.3 1.5.4 All 61 releases
email-log / include / Util / EmailHeaderParser.php

EmailHeaderParser.php in Email Log 2.61, at include/Util/EmailHeaderParser.php

131 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php namespace EmailLog\Util;
2
3 /**
4 * Email Header Parser.
5 *
6 * @author Sudar
7 */
8 defined( 'ABSPATH' ) || exit; // Exit if accessed directly
9
10 /**
11 * Class Email Header Parser.
12 *
13 * @since 1.0
14 */
15 class EmailHeaderParser {
16
17 /**
18 * Join email headers.
19 *
20 * @since 1.0
21 *
22 * @param array $data Headers to be joined.
23 *
24 * @return string Joined headers.
25 */
26 public function join_headers( $data ) {
27 $headers = '';
28
29 if ( ! empty( $data['from'] ) ) {
30 $headers .= 'From: ' . $data['from'] . "\r\n";
31 }
32
33 if ( ! empty( $data['cc'] ) ) {
34 $headers .= 'CC: ' . $data['cc'] . "\r\n";
35 }
36
37 if ( ! empty( $data['bcc'] ) ) {
38 $headers .= 'BCC: ' . $data['bcc'] . "\r\n";
39 }
40
41 if ( ! empty( $data['reply_to'] ) ) {
42 $headers .= 'Reply-to: ' . $data['reply_to'] . "\r\n";
43 }
44
45 if ( ! empty( $data['content_type'] ) ) {
46 $headers .= 'Content-type: ' . $data['content_type'] . "\r\n";
47 }
48
49 return $headers;
50 }
51
52 /**
53 * Return parsed headers.
54 *
55 * @param string $headers Headers to parse.
56 *
57 * @return array Parsed Headers.
58 */
59 public function parse_headers( $headers ) {
60 return $this->parse( $headers );
61 }
62
63 /**
64 * Parse Headers.
65 *
66 * @access private
67 *
68 * @param string $headers Headers to be parsed.
69 *
70 * @return array Parsed headers.
71 */
72 private function parse( $headers ) {
73 $data = array();
74 $arr_headers = explode( "\n", $headers );
75
76 foreach ( $arr_headers as $header ) {
77 $split_header = explode( ':', $header );
78 $value = $this->parse_header_line( $split_header );
79
80 if ( trim( $value ) != '' ) {
81 switch ( strtolower( $split_header[0] ) ) {
82 case 'from':
83 $data['from'] = $value;
84 break;
85
86 case 'cc':
87 $data['cc'] = $value;
88 break;
89
90 case 'bcc':
91 $data['bcc'] = $value;
92 break;
93
94 case 'reply-to':
95 $data['reply_to'] = $value;
96 break;
97
98 case 'content-type':
99 $data['content_type'] = $value;
100 break;
101 }
102 }
103 }
104
105 return $data;
106 }
107
108 /**
109 * Parse individual header line.
110 *
111 * @since 1.0
112 * @access private
113 *
114 * @param array $header Header line to be parsed.
115 *
116 * @return string Parsed value.
117 */
118 private function parse_header_line( $header ) {
119 $value = '';
120 if ( 2 == count( $header ) ) {
121 if ( is_array( $header[1] ) ) {
122 $value = trim( implode( ',', array_map( 'trim', $header[1] ) ) );
123 } else {
124 $value = trim( $header[1] );
125 }
126 }
127
128 return $value;
129 }
130 }
131