TestExtMailparse -> php
Esse commit está contido em:
@@ -35,7 +35,6 @@
|
||||
#include "hphp/facebook/extensions/tao/test_ext_tao.h"
|
||||
#include "hphp/facebook/extensions/urlextraction/test_ext_urlextraction.h"
|
||||
#include "hphp/test/ext/test_ext_curl.h"
|
||||
#include "hphp/test/ext/test_ext_mailparse.h"
|
||||
#include "hphp/test/ext/test_ext_mcrypt.h"
|
||||
#include "hphp/test/ext/test_ext_memcached.h"
|
||||
#include "hphp/test/ext/test_ext_mysql.h"
|
||||
|
||||
@@ -1,418 +0,0 @@
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| HipHop for PHP |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2010-2013 Facebook, Inc. (http://www.facebook.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
#include "hphp/test/ext/test_ext_mailparse.h"
|
||||
#include "hphp/runtime/ext/ext.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
bool TestExtMailparse::RunTests(const std::string &which) {
|
||||
bool ret = true;
|
||||
|
||||
RUN_TEST(test_mail);
|
||||
RUN_TEST(test_ezmlm_hash);
|
||||
RUN_TEST(test_mailparse_msg_create);
|
||||
RUN_TEST(test_mailparse_msg_free);
|
||||
RUN_TEST(test_mailparse_msg_parse_file);
|
||||
RUN_TEST(test_mailparse_msg_parse);
|
||||
RUN_TEST(test_mailparse_msg_extract_part_file);
|
||||
RUN_TEST(test_mailparse_msg_extract_whole_part_file);
|
||||
RUN_TEST(test_mailparse_msg_extract_part);
|
||||
RUN_TEST(test_mailparse_msg_get_part_data);
|
||||
RUN_TEST(test_mailparse_msg_get_part);
|
||||
RUN_TEST(test_mailparse_msg_get_structure);
|
||||
RUN_TEST(test_mailparse_rfc822_parse_addresses);
|
||||
RUN_TEST(test_mailparse_stream_encode);
|
||||
RUN_TEST(test_mailparse_uudecode_all);
|
||||
RUN_TEST(test_mailparse_determine_best_xfer_encoding);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
bool TestExtMailparse::test_mail() {
|
||||
//VCB("<?php ");
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtMailparse::test_ezmlm_hash() {
|
||||
VS(f_ezmlm_hash("foo"), 40);
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtMailparse::test_mailparse_msg_create() {
|
||||
const char *files[] = { "mime", "phpcvs1", "qp", "uue" };
|
||||
|
||||
for (unsigned int i = 0; i < sizeof(files)/sizeof(files[0]); i++) {
|
||||
string file = files[i];
|
||||
string testname = "test/ext/test_ext_mailparse." + file + ".txt";
|
||||
string expname = "test/ext/test_ext_mailparse." + file + ".exp";
|
||||
|
||||
Variant mime = f_mailparse_msg_create();
|
||||
PlainFile input;
|
||||
input.open(testname, "r");
|
||||
while (!input.eof()) {
|
||||
String data = input.read(1024);
|
||||
if (!data.isNull()) {
|
||||
f_mailparse_msg_parse(mime, data);
|
||||
}
|
||||
}
|
||||
input.close();
|
||||
|
||||
Array arr = f_mailparse_msg_get_structure(mime);
|
||||
f_ob_start();
|
||||
echo("Message: "); echo(file.c_str()); echo("\n");
|
||||
for (ArrayIter iter(arr); iter; ++iter) {
|
||||
Variant partname = iter.second();
|
||||
int depth = f_count(f_explode(".", partname)) - 1;
|
||||
String indent = f_str_repeat(" ", depth * 2);
|
||||
|
||||
Variant subpart = f_mailparse_msg_get_part(mime, partname);
|
||||
if (subpart.isNull()) {
|
||||
f_var_dump(partname); echo("\n");
|
||||
f_var_dump(arr);
|
||||
break;
|
||||
}
|
||||
|
||||
Variant data = f_mailparse_msg_get_part_data(subpart);
|
||||
echo("\n"); echo(indent); echo("Part "); echo(partname); echo("\n");
|
||||
f_ksort(ref(data));
|
||||
for (ArrayIter iter(data); iter; ++iter) {
|
||||
String key = iter.first().toString();
|
||||
if (key != "headers" && key != "ending-pos-body") {
|
||||
echo(indent); echo(key); echo(" => ");
|
||||
f_var_dump(iter.second());
|
||||
}
|
||||
}
|
||||
}
|
||||
String output = f_ob_get_contents();
|
||||
|
||||
Variant expect = f_file_get_contents(expname.c_str());
|
||||
VS(output, expect);
|
||||
f_ob_end_clean();
|
||||
}
|
||||
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtMailparse::test_mailparse_msg_free() {
|
||||
f_mailparse_msg_free(uninit_null());
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtMailparse::test_mailparse_msg_parse_file() {
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtMailparse::test_mailparse_msg_parse() {
|
||||
static const StaticString
|
||||
s_headers("headers"),
|
||||
s_to("to");
|
||||
String text =
|
||||
"To: fred@bloggs.com\n"
|
||||
"To: wez@thebrainroom.com\n"
|
||||
"\n"
|
||||
"hello, this is some text=hello.";
|
||||
|
||||
Variant mime = f_mailparse_msg_create();
|
||||
f_mailparse_msg_parse(mime, text);
|
||||
Variant data = f_mailparse_msg_get_part_data(mime);
|
||||
VS(data[s_headers][s_to], "fred@bloggs.com, wez@thebrainroom.com");
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtMailparse::test_mailparse_msg_extract_part_file() {
|
||||
// tested in test_mailparse_msg_extract_part()
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtMailparse::test_mailparse_msg_extract_whole_part_file() {
|
||||
// tested in test_mailparse_msg_extract_part()
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtMailparse::test_mailparse_msg_extract_part() {
|
||||
String text =
|
||||
"To: fred@bloggs.com\n"
|
||||
"Mime-Version: 1.0\n"
|
||||
"Content-Type: text/plain\n"
|
||||
"Subject: A simple MIME message\n"
|
||||
"\n"
|
||||
"hello, this is some text hello.\n"
|
||||
"blah blah blah.\n";
|
||||
|
||||
Variant fp = f_tmpfile();
|
||||
f_fwrite(fp, text);
|
||||
f_rewind(fp);
|
||||
|
||||
f_ob_start();
|
||||
|
||||
Variant mime = f_mailparse_msg_create();
|
||||
f_mailparse_msg_parse(mime, text);
|
||||
|
||||
echo("Extract to output\n");
|
||||
f_mailparse_msg_extract_part_file(mime, fp);
|
||||
|
||||
echo("Extract and return as string\n");
|
||||
Variant result = f_mailparse_msg_extract_part_file(mime, fp, uninit_null());
|
||||
echo("-->\n");
|
||||
echo(result);
|
||||
|
||||
echo("\nExtract to open file\n");
|
||||
Variant fpdest = f_tmpfile();
|
||||
f_mailparse_msg_extract_part_file(mime, fp, fpdest);
|
||||
echo("\nrewinding\n");
|
||||
f_rewind(fpdest);
|
||||
f_fpassthru(fpdest);
|
||||
|
||||
echo("\nExtract via user function\n");
|
||||
f_mailparse_msg_extract_part_file(mime, fp);
|
||||
|
||||
echo("\nExtract whole part to output\n");
|
||||
f_mailparse_msg_extract_whole_part_file(mime, fp);
|
||||
|
||||
echo("\nExtract part from string to output\n");
|
||||
f_mailparse_msg_extract_part(mime, text);
|
||||
f_fclose(fpdest);
|
||||
f_fclose(fp);
|
||||
|
||||
String output = f_ob_get_contents();
|
||||
f_ob_end_clean();
|
||||
|
||||
VS(output,
|
||||
"Extract to output\n"
|
||||
"hello, this is some text hello.\n"
|
||||
"blah blah blah.\n"
|
||||
"Extract and return as string\n"
|
||||
"-->\n"
|
||||
"hello, this is some text hello.\n"
|
||||
"blah blah blah.\n"
|
||||
"\n"
|
||||
"Extract to open file\n"
|
||||
"\n"
|
||||
"rewinding\n"
|
||||
"hello, this is some text hello.\n"
|
||||
"blah blah blah.\n"
|
||||
"\n"
|
||||
"Extract via user function\n"
|
||||
"hello, this is some text hello.\n"
|
||||
"blah blah blah.\n"
|
||||
"\n"
|
||||
"Extract whole part to output\n"
|
||||
"To: fred@bloggs.com\n"
|
||||
"Mime-Version: 1.0\n"
|
||||
"Content-Type: text/plain\n"
|
||||
"Subject: A simple MIME message\n"
|
||||
"\n"
|
||||
"hello, this is some text hello.\n"
|
||||
"blah blah blah.\n"
|
||||
"\n"
|
||||
"Extract part from string to output\n"
|
||||
"hello, this is some text hello.\n"
|
||||
"blah blah blah.\n");
|
||||
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtMailparse::test_mailparse_msg_get_part_data() {
|
||||
// tested in test_mailparse_msg_parse()
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtMailparse::test_mailparse_msg_get_part() {
|
||||
String msg =
|
||||
"Received: from mail pickup service by hotmail.com with Microsoft\n"
|
||||
"SMTPSVC;\n"
|
||||
"Sat, 18 Feb 2006 22:58:14 -0800\n"
|
||||
"Received: from 66.178.40.49 by BAY116-DAV8.phx.gbl with DAV;\n"
|
||||
"Sun, 19 Feb 2006 06:58:13 +0000\n"
|
||||
"\n"
|
||||
"test";
|
||||
|
||||
Variant mail = f_mailparse_msg_create();
|
||||
f_mailparse_msg_parse(mail, msg);
|
||||
Array arr = f_mailparse_msg_get_structure(mail);
|
||||
for (ArrayIter iter(arr); iter; ++iter) {
|
||||
Variant section = f_mailparse_msg_get_part(mail, iter.second());
|
||||
Variant info = f_mailparse_msg_get_part_data(section);
|
||||
Array received =
|
||||
CREATE_VECTOR2("from mail pickup service by hotmail.com with Microsoft",
|
||||
"from 66.178.40.49 by BAY116-DAV8.phx.gbl with DAV;");
|
||||
VS(info,
|
||||
Array(ArrayInit(11).
|
||||
set(String("headers"), CREATE_MAP1("received", received)).
|
||||
set(String("starting-pos"), 0).
|
||||
set(String("starting-pos-body"), 200).
|
||||
set(String("ending-pos"), 200).
|
||||
set(String("ending-pos-body"), 200).
|
||||
set(String("line-count"), 6).
|
||||
set(String("body-line-count"), 0).
|
||||
set(String("charset"), "us-ascii").
|
||||
set(String("transfer-encoding"), "8bit").
|
||||
set(String("content-type"), "text/plain").
|
||||
set(String("content-base"), "/").
|
||||
create()));
|
||||
}
|
||||
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtMailparse::test_mailparse_msg_get_structure() {
|
||||
// tested in test_mailparse_msg_create()
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtMailparse::test_mailparse_rfc822_parse_addresses() {
|
||||
static const StaticString
|
||||
s_display("display"),
|
||||
s_address("address"),
|
||||
s_is_group("is_group");
|
||||
Array addresses =
|
||||
CREATE_VECTOR2("\":sysmail\"@ Some-Group. Some-Org, Muhammed."
|
||||
"(I am the greatest) Ali @(the)Vegas.WBA",
|
||||
"\"strange\":\":sysmail\"@ Some-Group. Some-Org, Muhammed."
|
||||
"(I am the greatest) Ali @(the)Vegas.WBA;");
|
||||
|
||||
f_ob_start();
|
||||
|
||||
for (ArrayIter iter(addresses); iter; ++iter) {
|
||||
Variant parsed = f_mailparse_rfc822_parse_addresses(iter.second());
|
||||
for (ArrayIter iter2(parsed); iter2; ++iter2) {
|
||||
Variant pair = iter2.second();
|
||||
echo(pair[s_display]); echo("\n");
|
||||
echo(pair[s_address]); echo("\n");
|
||||
if (pair[s_is_group].toBoolean()) {
|
||||
Variant sub = f_mailparse_rfc822_parse_addresses
|
||||
(f_substr(pair[s_address], 1, f_strlen(pair[s_address]) - 2));
|
||||
for (ArrayIter iter3(sub); iter3; ++iter3) {
|
||||
echo(" "); echo(iter3.second()[s_address]); echo("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
echo("...\n");
|
||||
}
|
||||
|
||||
String output = f_ob_get_contents();
|
||||
f_ob_end_clean();
|
||||
VS(output,
|
||||
":sysmail@Some-Group.Some-Org\n"
|
||||
"\":sysmail\"@Some-Group.Some-Org\n"
|
||||
"I am the greatest the\n"
|
||||
"Muhammed.Ali@Vegas.WBA\n"
|
||||
"...\n"
|
||||
"strange\n"
|
||||
":\":sysmail\"@Some-Group.Some-Org,Muhammed.Ali@Vegas.WBA;\n"
|
||||
" \":sysmail\"@Some-Group.Some-Org\n"
|
||||
" Muhammed.Ali@Vegas.WBA\n"
|
||||
"...\n");
|
||||
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtMailparse::test_mailparse_stream_encode() {
|
||||
{
|
||||
String text = "hello, this is some text=hello.";
|
||||
Variant fp = f_tmpfile();
|
||||
f_fwrite(fp, text); f_rewind(fp);
|
||||
Variant dest = f_tmpfile();
|
||||
f_mailparse_stream_encode(fp, dest, "quoted-printable");
|
||||
f_rewind(dest);
|
||||
Variant data = f_fread(dest, 2048);
|
||||
VS(data, "hello, this is some text=3Dhello.");
|
||||
}
|
||||
{
|
||||
String text =
|
||||
"To: fred@bloggs.com\n"
|
||||
"\n"
|
||||
"blah blah blah From blah $ \" & £ blah blah blah blah blah\n"
|
||||
"From the first of the month, things will be different!\n"
|
||||
"blah blah blah From blah\n"
|
||||
"Frome is a town in Somerset.";
|
||||
|
||||
f_ob_start();
|
||||
|
||||
Variant fp = f_tmpfile();
|
||||
f_fwrite(fp, text);
|
||||
f_rewind(fp);
|
||||
|
||||
Variant fpdest = f_tmpfile();
|
||||
f_mailparse_stream_encode(fp, fpdest, "quoted-printable");
|
||||
f_rewind(fpdest);
|
||||
f_fpassthru(fpdest);
|
||||
|
||||
f_fclose(fp);
|
||||
f_fclose(fpdest);
|
||||
|
||||
String output = f_ob_get_contents();
|
||||
f_ob_end_clean();
|
||||
VS(output,
|
||||
"To: fred@bloggs.com\r\n"
|
||||
"\r\n"
|
||||
"blah blah blah From blah $ \" & =C2=A3 blah blah blah blah blah\r\n"
|
||||
"=46rom the first of the month, things will be different!\r\n"
|
||||
"blah blah blah From blah\r\n"
|
||||
"Frome is a town in Somerset.");
|
||||
}
|
||||
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtMailparse::test_mailparse_uudecode_all() {
|
||||
static const StaticString s_filename("filename");
|
||||
String text =
|
||||
"To: fred@bloggs.com\n"
|
||||
"\n"
|
||||
"hello, this is some text hello.\n"
|
||||
"blah blah blah.\n"
|
||||
"\n"
|
||||
"begin 644 test.txt\n"
|
||||
"/=&AI<R!I<R!A('1E<W0*\n"
|
||||
"`\n"
|
||||
"end";
|
||||
|
||||
f_ob_start();
|
||||
|
||||
Variant fp = f_tmpfile();
|
||||
f_fwrite(fp, text);
|
||||
|
||||
Variant data = f_mailparse_uudecode_all(fp);
|
||||
echo("BODY\n");
|
||||
f_readfile(data[0][s_filename]);
|
||||
echo("UUE\n");
|
||||
f_readfile(data[1][s_filename]);
|
||||
|
||||
f_unlink(data[0][s_filename]);
|
||||
f_unlink(data[1][s_filename]);
|
||||
|
||||
String output = f_ob_get_contents();
|
||||
f_ob_end_clean();
|
||||
VS(output,
|
||||
"BODY\n"
|
||||
"To: fred@bloggs.com\n"
|
||||
"\n"
|
||||
"hello, this is some text hello.\n"
|
||||
"blah blah blah.\n"
|
||||
"\n"
|
||||
"UUE\n"
|
||||
"this is a test\n");
|
||||
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtMailparse::test_mailparse_determine_best_xfer_encoding() {
|
||||
return Count(true);
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| HipHop for PHP |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2010-2013 Facebook, Inc. (http://www.facebook.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
#ifndef incl_HPHP_TEST_EXT_MAILPARSE_H_
|
||||
#define incl_HPHP_TEST_EXT_MAILPARSE_H_
|
||||
|
||||
// >>>>>> Generated by idl.php. Do NOT modify. <<<<<<
|
||||
|
||||
#include "hphp/test/ext/test_cpp_ext.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class TestExtMailparse : public TestCppExt {
|
||||
public:
|
||||
virtual bool RunTests(const std::string &which);
|
||||
|
||||
bool test_mail();
|
||||
bool test_ezmlm_hash();
|
||||
bool test_mailparse_msg_create();
|
||||
bool test_mailparse_msg_free();
|
||||
bool test_mailparse_msg_parse_file();
|
||||
bool test_mailparse_msg_parse();
|
||||
bool test_mailparse_msg_extract_part_file();
|
||||
bool test_mailparse_msg_extract_whole_part_file();
|
||||
bool test_mailparse_msg_extract_part();
|
||||
bool test_mailparse_msg_get_part_data();
|
||||
bool test_mailparse_msg_get_part();
|
||||
bool test_mailparse_msg_get_structure();
|
||||
bool test_mailparse_rfc822_parse_addresses();
|
||||
bool test_mailparse_stream_encode();
|
||||
bool test_mailparse_uudecode_all();
|
||||
bool test_mailparse_determine_best_xfer_encoding();
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#endif // incl_HPHP_TEST_EXT_MAILPARSE_H_
|
||||
@@ -1,39 +0,0 @@
|
||||
Message: mime
|
||||
|
||||
Part 1
|
||||
body-line-count => int(27)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-boundary => string(41) "----=_NextPart_000_0007_01C2566B.DA7C64F0"
|
||||
content-type => string(15) "multipart/mixed"
|
||||
ending-pos => int(1488)
|
||||
line-count => int(47)
|
||||
starting-pos => int(0)
|
||||
starting-pos-body => int(856)
|
||||
transfer-encoding => string(4) "8bit"
|
||||
|
||||
Part 1.1
|
||||
body-line-count => int(1)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-charset => string(8) "us-ascii"
|
||||
content-type => string(10) "text/plain"
|
||||
ending-pos => int(1081)
|
||||
line-count => int(5)
|
||||
starting-pos => int(949)
|
||||
starting-pos-body => int(1032)
|
||||
transfer-encoding => string(4) "7bit"
|
||||
|
||||
Part 1.2
|
||||
body-line-count => int(7)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-disposition => string(10) "attachment"
|
||||
content-name => string(6) "README"
|
||||
content-type => string(24) "application/octet-stream"
|
||||
disposition-filename => string(6) "README"
|
||||
ending-pos => int(1435)
|
||||
line-count => int(13)
|
||||
starting-pos => int(1128)
|
||||
starting-pos-body => int(1286)
|
||||
transfer-encoding => string(16) "quoted-printable"
|
||||
@@ -1,26 +0,0 @@
|
||||
Message: phpcvs1
|
||||
|
||||
Part 1
|
||||
body-line-count => int(105)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-boundary => string(37) "=====================_71195359==_.ALT"
|
||||
content-type => string(21) "multipart/alternative"
|
||||
ending-pos => int(5425)
|
||||
line-count => int(141)
|
||||
starting-pos => int(0)
|
||||
starting-pos-body => int(1976)
|
||||
transfer-encoding => string(4) "8bit"
|
||||
|
||||
Part 1.1
|
||||
body-line-count => int(98)
|
||||
charset => string(10) "iso-8859-1"
|
||||
content-base => string(1) "/"
|
||||
content-charset => string(10) "iso-8859-1"
|
||||
content-format => string(6) "flowed"
|
||||
content-type => string(10) "text/plain"
|
||||
ending-pos => int(5378)
|
||||
line-count => int(101)
|
||||
starting-pos => int(2017)
|
||||
starting-pos-body => int(2127)
|
||||
transfer-encoding => string(16) "quoted-printable"
|
||||
@@ -1,39 +0,0 @@
|
||||
Message: qp
|
||||
|
||||
Part 1
|
||||
body-line-count => int(27)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-boundary => string(41) "----=_NextPart_000_0003_01C2566B.C7AC6A50"
|
||||
content-type => string(15) "multipart/mixed"
|
||||
ending-pos => int(1485)
|
||||
line-count => int(47)
|
||||
starting-pos => int(0)
|
||||
starting-pos-body => int(859)
|
||||
transfer-encoding => string(4) "8bit"
|
||||
|
||||
Part 1.1
|
||||
body-line-count => int(1)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-charset => string(8) "us-ascii"
|
||||
content-type => string(10) "text/plain"
|
||||
ending-pos => int(1076)
|
||||
line-count => int(5)
|
||||
starting-pos => int(952)
|
||||
starting-pos-body => int(1035)
|
||||
transfer-encoding => string(4) "7bit"
|
||||
|
||||
Part 1.2
|
||||
body-line-count => int(7)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-disposition => string(10) "attachment"
|
||||
content-name => string(6) "README"
|
||||
content-type => string(24) "application/octet-stream"
|
||||
disposition-filename => string(6) "README"
|
||||
ending-pos => int(1432)
|
||||
line-count => int(13)
|
||||
starting-pos => int(1123)
|
||||
starting-pos-body => int(1281)
|
||||
transfer-encoding => string(16) "quoted-printable"
|
||||
@@ -1,12 +0,0 @@
|
||||
Message: uue
|
||||
|
||||
Part 1
|
||||
body-line-count => int(10)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-type => string(10) "text/plain"
|
||||
ending-pos => int(972)
|
||||
line-count => int(27)
|
||||
starting-pos => int(0)
|
||||
starting-pos-body => int(760)
|
||||
transfer-encoding => string(4) "8bit"
|
||||
@@ -0,0 +1,308 @@
|
||||
<?php
|
||||
|
||||
function VS($x, $y) {
|
||||
var_dump($x === $y);
|
||||
if ($x !== $y) { echo "Failed: $y\n"; echo "Got: $x\n";
|
||||
var_dump(debug_backtrace()); }
|
||||
}
|
||||
function VERIFY($x) { VS($x != false, true); }
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
VS(ezmlm_hash("foo"), 40);
|
||||
|
||||
$files = array("mime", "phpcvs1", "qp", "uue");
|
||||
|
||||
foreach ($files as $file) {
|
||||
$testname = __DIR__."/test_ext_mailparse." . $file . ".txt";
|
||||
|
||||
$mime = mailparse_msg_create();
|
||||
$input = fopen($testname, "r");
|
||||
while (!feof($input)) {
|
||||
$data = fread($input, 1024);
|
||||
if ($data) {
|
||||
mailparse_msg_parse($mime, $data);
|
||||
}
|
||||
}
|
||||
|
||||
$arr = mailparse_msg_get_structure($mime);
|
||||
echo "Message: ";
|
||||
echo $file;
|
||||
echo "\n";
|
||||
|
||||
foreach ($arr as $blahblah => $partname) {
|
||||
$depth = count(explode(".", $partname)) - 1;
|
||||
$indent = str_repeat(" ", $depth * 2);
|
||||
|
||||
$subpart = mailparse_msg_get_part($mime, $partname);
|
||||
if (!$subpart) {
|
||||
var_dump($partname); echo("\n");
|
||||
var_dump($arr);
|
||||
break;
|
||||
}
|
||||
|
||||
$data = mailparse_msg_get_part_data($subpart);
|
||||
echo "\n"; echo $indent; echo "Part "; echo $partname; echo "\n";
|
||||
ksort($data);
|
||||
foreach ($data as $key => $second) {
|
||||
if ($key != "headers" && $key != "ending-pos-body") {
|
||||
echo $indent; echo $key; echo " => ";
|
||||
var_dump($second);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
$text =
|
||||
"To: fred@bloggs.com\n".
|
||||
"To: wez@thebrainroom.com\n".
|
||||
"\n".
|
||||
"hello, this is some text=hello.";
|
||||
|
||||
$mime = mailparse_msg_create();
|
||||
mailparse_msg_parse($mime, $text);
|
||||
$data = mailparse_msg_get_part_data($mime);
|
||||
VS($data['headers']['to'], "fred@bloggs.com, wez@thebrainroom.com");
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
$text =
|
||||
"To: fred@bloggs.com\n".
|
||||
"Mime-Version: 1.0\n".
|
||||
"Content-Type: text/plain\n".
|
||||
"Subject: A simple MIME message\n".
|
||||
"\n".
|
||||
"hello, this is some text hello.\n".
|
||||
"blah blah blah.\n";
|
||||
|
||||
$fp = tmpfile();
|
||||
fwrite($fp, $text);
|
||||
rewind($fp);
|
||||
|
||||
ob_start();
|
||||
|
||||
$mime = mailparse_msg_create();
|
||||
mailparse_msg_parse($mime, $text);
|
||||
|
||||
echo("Extract to output\n");
|
||||
mailparse_msg_extract_part_file($mime, $fp);
|
||||
|
||||
echo("Extract and return as string\n");
|
||||
$result = mailparse_msg_extract_part_file($mime, $fp, null);
|
||||
echo("-->\n");
|
||||
echo($result);
|
||||
|
||||
echo("\nExtract to open file\n");
|
||||
$fpdest = tmpfile();
|
||||
mailparse_msg_extract_part_file($mime, $fp, $fpdest);
|
||||
echo("\nrewinding\n");
|
||||
rewind($fpdest);
|
||||
fpassthru($fpdest);
|
||||
|
||||
echo("\nExtract via user function\n");
|
||||
mailparse_msg_extract_part_file($mime, $fp);
|
||||
|
||||
echo("\nExtract whole part to output\n");
|
||||
mailparse_msg_extract_whole_part_file($mime, $fp);
|
||||
|
||||
echo("\nExtract part from string to output\n");
|
||||
mailparse_msg_extract_part($mime, $text);
|
||||
fclose($fpdest);
|
||||
fclose($fp);
|
||||
|
||||
$output = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
VS($output,
|
||||
"Extract to output\n".
|
||||
"hello, this is some text hello.\n".
|
||||
"blah blah blah.\n".
|
||||
"Extract and return as string\n".
|
||||
"-->\n".
|
||||
"hello, this is some text hello.\n".
|
||||
"blah blah blah.\n".
|
||||
"\n".
|
||||
"Extract to open file\n".
|
||||
"\n".
|
||||
"rewinding\n".
|
||||
"hello, this is some text hello.\n".
|
||||
"blah blah blah.\n".
|
||||
"\n".
|
||||
"Extract via user function\n".
|
||||
"hello, this is some text hello.\n".
|
||||
"blah blah blah.\n".
|
||||
"\n".
|
||||
"Extract whole part to output\n".
|
||||
"To: fred@bloggs.com\n".
|
||||
"Mime-Version: 1.0\n".
|
||||
"Content-Type: text/plain\n".
|
||||
"Subject: A simple MIME message\n".
|
||||
"\n".
|
||||
"hello, this is some text hello.\n".
|
||||
"blah blah blah.\n".
|
||||
"\n".
|
||||
"Extract part from string to output\n".
|
||||
"hello, this is some text hello.\n".
|
||||
"blah blah blah.\n");
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
$msg =
|
||||
"Received: from mail pickup service by hotmail.com with Microsoft\n".
|
||||
"SMTPSVC;\n".
|
||||
"Sat, 18 Feb 2006 22:58:14 -0800\n".
|
||||
"Received: from 66.178.40.49 by BAY116-DAV8.phx.gbl with DAV;\n".
|
||||
"Sun, 19 Feb 2006 06:58:13 +0000\n".
|
||||
"\n".
|
||||
"test";
|
||||
|
||||
$mail = mailparse_msg_create();
|
||||
mailparse_msg_parse($mail, $msg);
|
||||
$arr = mailparse_msg_get_structure($mail);
|
||||
foreach ($arr as $first => $second) {
|
||||
$section = mailparse_msg_get_part($mail, $second);
|
||||
$info = mailparse_msg_get_part_data($section);
|
||||
$received =
|
||||
array("from mail pickup service by hotmail.com with Microsoft",
|
||||
"from 66.178.40.49 by BAY116-DAV8.phx.gbl with DAV;");
|
||||
VS($info,
|
||||
array(
|
||||
"headers" => array("received" => $received),
|
||||
"starting-pos" => 0,
|
||||
"starting-pos-body" => 200,
|
||||
"ending-pos" => 200,
|
||||
"ending-pos-body" => 200,
|
||||
"line-count" => 6,
|
||||
"body-line-count" => 0,
|
||||
"charset" => "us-ascii",
|
||||
"transfer-encoding" => "8bit",
|
||||
"content-type" => "text/plain",
|
||||
"content-base" => "/"
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
$addresses =
|
||||
array("\":sysmail\"@ Some-Group. Some-Org, Muhammed.".
|
||||
"(I am the greatest) Ali @(the)Vegas.WBA",
|
||||
"\"strange\":\":sysmail\"@ Some-Group. Some-Org, Muhammed.".
|
||||
"(I am the greatest) Ali @(the)Vegas.WBA;");
|
||||
|
||||
ob_start();
|
||||
|
||||
foreach ($addresses as $first => $second) {
|
||||
$parsed = mailparse_rfc822_parse_addresses($second);
|
||||
foreach ($parsed as $pfirst => $psecond) {
|
||||
$pair = $psecond;
|
||||
echo($pair['display']); echo("\n");
|
||||
echo($pair['address']); echo("\n");
|
||||
if ($pair['is_group']) {
|
||||
$sub = mailparse_rfc822_parse_addresses
|
||||
(substr($pair['address'], 1, strlen($pair['address']) - 2));
|
||||
foreach ($sub as $blah) {
|
||||
echo(" "); echo($blah['address']); echo("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
echo("...\n");
|
||||
}
|
||||
|
||||
$output = ob_get_contents();
|
||||
ob_end_clean();
|
||||
VS($output,
|
||||
":sysmail@Some-Group.Some-Org\n".
|
||||
"\":sysmail\"@Some-Group.Some-Org\n".
|
||||
"I am the greatest the\n".
|
||||
"Muhammed.Ali@Vegas.WBA\n".
|
||||
"...\n".
|
||||
"strange\n".
|
||||
":\":sysmail\"@Some-Group.Some-Org,Muhammed.Ali@Vegas.WBA;\n".
|
||||
" \":sysmail\"@Some-Group.Some-Org\n".
|
||||
" Muhammed.Ali@Vegas.WBA\n".
|
||||
"...\n");
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
$text = "hello, this is some text=hello.";
|
||||
$fp = tmpfile();
|
||||
fwrite($fp, $text); rewind($fp);
|
||||
$dest = tmpfile();
|
||||
mailparse_stream_encode($fp, $dest, "quoted-printable");
|
||||
rewind($dest);
|
||||
$data = fread($dest, 2048);
|
||||
VS($data, "hello, this is some text=3Dhello.");
|
||||
|
||||
$text =
|
||||
"To: fred@bloggs.com\n".
|
||||
"\n".
|
||||
"blah blah blah From blah $ \" & £ blah blah blah blah blah\n".
|
||||
"From the first of the month, things will be different!\n".
|
||||
"blah blah blah From blah\n".
|
||||
"Frome is a town in Somerset.";
|
||||
|
||||
ob_start();
|
||||
|
||||
$fp = tmpfile();
|
||||
fwrite($fp, $text);
|
||||
rewind($fp);
|
||||
|
||||
$fpdest = tmpfile();
|
||||
mailparse_stream_encode($fp, $fpdest, "quoted-printable");
|
||||
rewind($fpdest);
|
||||
fpassthru($fpdest);
|
||||
|
||||
fclose($fp);
|
||||
fclose($fpdest);
|
||||
|
||||
$output = ob_get_contents();
|
||||
ob_end_clean();
|
||||
VS($output,
|
||||
"To: fred@bloggs.com\r\n".
|
||||
"\r\n".
|
||||
"blah blah blah From blah $ \" & =C2=A3 blah blah blah blah blah\r\n".
|
||||
"=46rom the first of the month, things will be different!\r\n".
|
||||
"blah blah blah From blah\r\n".
|
||||
"Frome is a town in Somerset.");
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
$text =
|
||||
"To: fred@bloggs.com\n".
|
||||
"\n".
|
||||
"hello, this is some text hello.\n".
|
||||
"blah blah blah.\n".
|
||||
"\n".
|
||||
"begin 644 test.txt\n".
|
||||
"/=&AI<R!I<R!A('1E<W0*\n".
|
||||
"`\n".
|
||||
"end";
|
||||
|
||||
ob_start();
|
||||
|
||||
$fp = tmpfile();
|
||||
fwrite($fp, $text);
|
||||
|
||||
$data = mailparse_uudecode_all($fp);
|
||||
echo("BODY\n");
|
||||
readfile($data[0]['filename']);
|
||||
echo("UUE\n");
|
||||
readfile($data[1]['filename']);
|
||||
|
||||
unlink($data[0]['filename']);
|
||||
unlink($data[1]['filename']);
|
||||
|
||||
$output = ob_get_contents();
|
||||
ob_end_clean();
|
||||
VS($output,
|
||||
"BODY\n".
|
||||
"To: fred@bloggs.com\n".
|
||||
"\n".
|
||||
"hello, this is some text hello.\n".
|
||||
"blah blah blah.\n".
|
||||
"\n".
|
||||
"UUE\n".
|
||||
"this is a test\n");
|
||||
@@ -0,0 +1,124 @@
|
||||
bool(true)
|
||||
Message: mime
|
||||
|
||||
Part 1
|
||||
body-line-count => int(27)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-boundary => string(41) "----=_NextPart_000_0007_01C2566B.DA7C64F0"
|
||||
content-type => string(15) "multipart/mixed"
|
||||
ending-pos => int(1488)
|
||||
line-count => int(47)
|
||||
starting-pos => int(0)
|
||||
starting-pos-body => int(856)
|
||||
transfer-encoding => string(4) "8bit"
|
||||
|
||||
Part 1.1
|
||||
body-line-count => int(1)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-charset => string(8) "us-ascii"
|
||||
content-type => string(10) "text/plain"
|
||||
ending-pos => int(1081)
|
||||
line-count => int(5)
|
||||
starting-pos => int(949)
|
||||
starting-pos-body => int(1032)
|
||||
transfer-encoding => string(4) "7bit"
|
||||
|
||||
Part 1.2
|
||||
body-line-count => int(7)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-disposition => string(10) "attachment"
|
||||
content-name => string(6) "README"
|
||||
content-type => string(24) "application/octet-stream"
|
||||
disposition-filename => string(6) "README"
|
||||
ending-pos => int(1435)
|
||||
line-count => int(13)
|
||||
starting-pos => int(1128)
|
||||
starting-pos-body => int(1286)
|
||||
transfer-encoding => string(16) "quoted-printable"
|
||||
Message: phpcvs1
|
||||
|
||||
Part 1
|
||||
body-line-count => int(105)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-boundary => string(37) "=====================_71195359==_.ALT"
|
||||
content-type => string(21) "multipart/alternative"
|
||||
ending-pos => int(5425)
|
||||
line-count => int(141)
|
||||
starting-pos => int(0)
|
||||
starting-pos-body => int(1976)
|
||||
transfer-encoding => string(4) "8bit"
|
||||
|
||||
Part 1.1
|
||||
body-line-count => int(98)
|
||||
charset => string(10) "iso-8859-1"
|
||||
content-base => string(1) "/"
|
||||
content-charset => string(10) "iso-8859-1"
|
||||
content-format => string(6) "flowed"
|
||||
content-type => string(10) "text/plain"
|
||||
ending-pos => int(5378)
|
||||
line-count => int(101)
|
||||
starting-pos => int(2017)
|
||||
starting-pos-body => int(2127)
|
||||
transfer-encoding => string(16) "quoted-printable"
|
||||
Message: qp
|
||||
|
||||
Part 1
|
||||
body-line-count => int(27)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-boundary => string(41) "----=_NextPart_000_0003_01C2566B.C7AC6A50"
|
||||
content-type => string(15) "multipart/mixed"
|
||||
ending-pos => int(1485)
|
||||
line-count => int(47)
|
||||
starting-pos => int(0)
|
||||
starting-pos-body => int(859)
|
||||
transfer-encoding => string(4) "8bit"
|
||||
|
||||
Part 1.1
|
||||
body-line-count => int(1)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-charset => string(8) "us-ascii"
|
||||
content-type => string(10) "text/plain"
|
||||
ending-pos => int(1076)
|
||||
line-count => int(5)
|
||||
starting-pos => int(952)
|
||||
starting-pos-body => int(1035)
|
||||
transfer-encoding => string(4) "7bit"
|
||||
|
||||
Part 1.2
|
||||
body-line-count => int(7)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-disposition => string(10) "attachment"
|
||||
content-name => string(6) "README"
|
||||
content-type => string(24) "application/octet-stream"
|
||||
disposition-filename => string(6) "README"
|
||||
ending-pos => int(1432)
|
||||
line-count => int(13)
|
||||
starting-pos => int(1123)
|
||||
starting-pos-body => int(1281)
|
||||
transfer-encoding => string(16) "quoted-printable"
|
||||
Message: uue
|
||||
|
||||
Part 1
|
||||
body-line-count => int(10)
|
||||
charset => string(8) "us-ascii"
|
||||
content-base => string(1) "/"
|
||||
content-type => string(10) "text/plain"
|
||||
ending-pos => int(972)
|
||||
line-count => int(27)
|
||||
starting-pos => int(0)
|
||||
starting-pos-body => int(760)
|
||||
transfer-encoding => string(4) "8bit"
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
+5
-2
@@ -1,10 +1,11 @@
|
||||
Return-Path: <wez@thebrainroom.com>
|
||||
Received: from TITAN (titan.brainnet.i [192.168.2.7])
|
||||
by zaneeb.brainnet.i (8.10.2/8.10.2/SuSE Linux 8.10.0-0.3) with ESMTP id g87Be5721229
|
||||
for <wez@thebrainroom.com>; Sat, 7 Sep 2002 12:40:05 +0100
|
||||
by zaneeb.brainnet.i (8.10.2/8.10.2/SuSE Linux 8.10.0-0.3) with ESMTP id g87Be5721229
|
||||
for <wez@thebrainroom.com>; Sat, 7 Sep 2002 12:40:05 +0100
|
||||
X-Authentication-Warning: zaneeb.brainnet.i: Host titan.brainnet.i [192.168.2.7] claimed to be TITAN
|
||||
From: "Wez Furlong" <wez@thebrainroom.com>
|
||||
To: <wez@thebrainroom.com>
|
||||
|
||||
Subject: UUEncoded attachments
|
||||
Date: Sat, 7 Sep 2002 12:39:55 +0100
|
||||
Message-ID: <000001c25663$4cd5b460$0702a8c0@TITAN>
|
||||
@@ -25,3 +26,5 @@ K86EL<&%R<V4*("`@(&\@=FER=7,@<V-A;FYE<B`H;W!T:6]N86PI"@D*"@``
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário