* * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ if ($argc > 1) { $_SERVER['PHABRICATOR_ENV'] = $argv[1]; } $root = dirname(dirname(dirname(__FILE__))); require_once $root . '/scripts/__init_script__.php'; require_once $root . '/externals/mimemailparser/MimeMailParser.class.php'; $parser = new MimeMailParser(); $parser->setText(file_get_contents('php://stdin')); $text_body = $parser->getMessageBody('text'); $text_body_headers = $parser->getMessageBodyHeaders('text'); $content_type = idx($text_body_headers, 'content-type'); if (!phutil_is_utf8($text_body) && (preg_match('/charset="(.*?)"/', $content_type, $matches) || preg_match('/charset=(\\S+)/', $content_type, $matches))) { $text_body = phutil_utf8_convert($text_body, "UTF-8", $matches[1]); } $headers = $parser->getHeaders(); $headers['subject'] = iconv_mime_decode($headers['subject'], 0, "UTF-8"); $headers['from'] = iconv_mime_decode($headers['from'], 0, "UTF-8"); $received = new PhabricatorMetaMTAReceivedMail(); $received->setHeaders($headers); $received->setBodies(array('text' => $text_body, 'html' => $parser->getMessageBody('html'))); $attachments = array(); foreach ($parser->getAttachments() as $attachment) { if (preg_match('@text/(plain|html)@', $attachment->getContentType()) && $attachment->getContentDisposition() == 'inline') { // If this is an "inline" attachment with some sort of text content-type,
<?php /** * To run this example you need to pass in some input via STDIN */ require_once '../MimeMailParser.class.php'; $Parser = new MimeMailParser(); $Parser->setStream(STDIN); $to = $Parser->getHeader('to'); $delivered_to = $Parser->getHeader('delivered-to'); $from = $Parser->getHeader('from'); $subject = $Parser->getHeader('subject'); $text = $Parser->getMessageBody('text'); $html = $Parser->getMessageBody('html'); $attachments = $Parser->getAttachments(); // dump it so we can see var_dump($to, $delivered_to, $from, $subject, $text, $html, $attachments); ?>
//Settings $settings = array(); $q = $db->query("SELECT * FROM " . TABLE_PREFIX . "settings"); while ($r = $db->fetch_array($q)) { $settings[$r['field']] = $r['value']; } if ($settings['email_piping'] == 'no') { exit; } include INCLUDES . 'language/' . $settings['client_language'] . '.php'; $text = file_get_contents('php://stdin'); $Parser = new MimeMailParser(); $Parser->setText($text); $to = $Parser->getHeader('to'); $from = $Parser->getHeader('from'); $text = $Parser->getMessageBody('text'); $attachments = $Parser->getAttachments(); $subject = $Parser->getHeader('subject'); $subject2 = imap_mime_header_decode($subject); for ($i = 0; $i < count($subject2); $i++) { $subjectdecoded .= $subject2[$i]->text; } $subject = $subjectdecoded; if (strpos($from, '<') !== false) { $from2 = explode('<', $from); $from3 = explode('>', $from2[1]); $from_name = trim($from2[0]); $from_email = trim($from3[0]); } else { $from_name = $from; $from_email = $from;
if (!@mysql_select_db(MASTERDB)) { exit(0); } include_once $APP_PATH . "include_functions.php"; include_once $APP_PATH . "ssadmin/processemails_include.php"; include_once $APP_PATH . "phpmailer/mimemailparser/MimeMailParser.class.php"; $Parser = new MimeMailParser(); $Parser->setPath($argv[1]); $thisemail_toAddress = getEmailIdFromString($Parser->getHeader('to')); $thisemail_ccAddress = getEmailIdFromString($Parser->getHeader('cc')); $thisemail_fromAddress = getEmailIdFromString($Parser->getHeader('from')); $thisemail_subject = $Parser->getHeader('subject'); // $thisemail_htmlbody = $Parser->getMessageBody('html'); // $thisemail_attachments = $Parser->getAttachments(); if ($Parser->getHeader('content-transfer-encoding') == 'base64') { $thisemail_body = base64_decode($Parser->getMessageBody('text')); } else { $thisemail_body = $Parser->getMessageBody('text'); } $pos = strpos(strtolower($thisemail_toAddress), '@discreteevents.com'); if ($pos === false) { $pos = strpos(strtolower($thisemail_ccAddress), '@discreteevents.com'); if ($pos === false) { // wonder what to do with this email ? calling quits exit(0); } else { list($before_underscore) = explode('_', $thisemail_ccAddress); $SUBDOMAIN = strBetweenXY($thisemail_ccAddress, '_', '@'); } } else { list($before_underscore) = explode('_', $thisemail_toAddress);
define(DB_PASS, "password"); R::setup(DB_DNS, DB_UNAME, DB_PASS); $parser = new MimeMailParser(); $parser->setStream(STDIN); $to = $parser->getHeader('to'); $mail = explode('@', $to); if ($bean = R::findOne('email', 'email=:email AND time>=:time', array(':email' => $mail[0], ':time' => time()))) { $from = $parser->getHeader('from'); $subject = $parser->getHeader('subject'); $mail = new PHPMailer(); $mail->From = '*****@*****.**'; $mail->FromName = 'tempmail.ir'; $mail->addReplyTo($from); $mail->addAddress($bean->forwardto); $mail->Subject = $subject; $mail->AltBody = $parser->getMessageBody(); $mail->Body = $parser->getMessageBody('html'); $mail->isHTML(); $save_dir = __DIR__ . '/attachments/'; $hash = time() . md5($to . $from . $subject); $filenames = array(); foreach ($parser->getAttachments() as $attachment) { $filenames[] = $attachment->filename; if ($fp = fopen($save_dir . $hash . $attachment->filename, 'w')) { while ($bytes = $attachment->read()) { $content = $bytes; fwrite($fp, $bytes); } fclose($fp); $mail->addAttachment($save_dir . $hash . $attachment->filename, $attachment->filename); }
require_once MTTPATH . 'init.php'; $db = DBConnection::instance(); define("__SIG__", Config::get('signature')); if (!__SIG__) { die("error: no signature"); } if (isset($argv[1])) { switch ($argv[1]) { case "importmail": ########################## # pecl install mailparse # ########################## require_once MTTPATH . "third-party/MimeMailParser.class.php"; $Parser = new MimeMailParser(); $Parser->setStream(STDIN); $parsed = parseMail($Parser->getMessageBody('text'), $db, $Parser->getHeader('from')); if ($parsed['body']) { $parsed['body'] = trim($parsed['body']) . "\n\n"; } else { $parsed['body'] = ""; } $parsed['body'] .= "Received " . date("F j, Y, g:i A") . " via mail from: " . $Parser->getHeader('from'); $t = addTask($db, $parsed['list'], $Parser->getHeader('subject'), null, $parsed['body'], $parsed['priority'], $parsed['duedate'], $parsed['tags']); if (!$t['total'] || $t['total'] < 1) { err("error creating new task.", $Parser->getHeader('from')); } break; case "getduetasks": $where = array(); $start = date("Y-m-d"); $end = date("Y-m-d", time() + 60 * 60 * 24 * 14);