Use without composer
Hi, I want to use the parser without composer. I use your example code like this: But there is an error: Fatal error: Uncaught Error: Class 'Pimple\Container' not found How can I use it without composer? Best regards Christoph
require_once 'Container.php';
require_once 'Header/AbstractHeader.php';
require_once 'Header/AddressHeader.php';
require_once 'Header/Consumer/AbstractConsumer.php';
require_once 'Header/Consumer/AddressBaseConsumer.php';
require_once 'Header/Consumer/AddressConsumer.php';
require_once 'Header/Consumer/AddressEmailConsumer.php';
require_once 'Header/Consumer/AddressGroupConsumer.php';
require_once 'Header/Consumer/CommentConsumer.php';
require_once 'Header/Consumer/ConsumerService.php';
require_once 'Header/Consumer/DateConsumer.php';
require_once 'Header/Consumer/GenericConsumer.php';
require_once 'Header/Consumer/IdBaseConsumer.php';
require_once 'Header/Consumer/IdConsumer.php';
require_once 'Header/Consumer/ParameterConsumer.php';
require_once 'Header/Consumer/QuotedStringConsumer.php';
require_once 'Header/Consumer/Received/DomainConsumer.php';
require_once 'Header/Consumer/Received/GenericReceivedConsumer.php';
require_once 'Header/Consumer/Received/ReceivedDateConsumer.php';
require_once 'Header/Consumer/ReceivedConsumer.php';
require_once 'Header/Consumer/SubjectConsumer.php';
require_once 'Header/DateHeader.php';
require_once 'Header/GenericHeader.php';
require_once 'Header/HeaderConsts.php';
require_once 'Header/HeaderFactory.php';
require_once 'Header/IdHeader.php';
require_once 'Header/IHeader.php';
require_once 'Header/IHeaderPart.php';
require_once 'Header/MimeEncodedHeader.php';
require_once 'Header/ParameterHeader.php';
require_once 'Header/Part/AddressGroupPart.php';
require_once 'Header/Part/AddressPart.php';
require_once 'Header/Part/CommentPart.php';
require_once 'Header/Part/DatePart.php';
require_once 'Header/Part/HeaderPart.php';
require_once 'Header/Part/HeaderPartFactory.php';
require_once 'Header/Part/LiteralPart.php';
require_once 'Header/Part/MimeLiteralPart.php';
require_once 'Header/Part/MimeLiteralPartFactory.php';
require_once 'Header/Part/ParameterPart.php';
require_once 'Header/Part/ReceivedDomainPart.php';
require_once 'Header/Part/ReceivedPart.php';
require_once 'Header/Part/SplitParameterToken.php';
require_once 'Header/Part/Token.php';
require_once 'Header/ReceivedHeader.php';
require_once 'Header/SubjectHeader.php';
require_once 'IMessage.php';
require_once 'MailMimeParser.php';
require_once 'Message/Factory/IMessagePartFactory.php';
require_once 'Message/Factory/IMimePartFactory.php';
require_once 'Message/Factory/IUUEncodedPartFactory.php';
require_once 'Message/Factory/PartChildrenContainerFactory.php';
require_once 'Message/Factory/PartHeaderContainerFactory.php';
require_once 'Message/Factory/PartStreamContainerFactory.php';
require_once 'Message/Helper/AbstractHelper.php';
require_once 'Message/Helper/GenericHelper.php';
require_once 'Message/Helper/MultipartHelper.php';
require_once 'Message/Helper/PrivacyHelper.php';
require_once 'Message/IMessagePart.php';
require_once 'Message/IMimePart.php';
require_once 'Message/IMultiPart.php';
require_once 'Message/IUUEncodedPart.php';
require_once 'Message/MessagePart.php';
require_once 'Message/MimePart.php';
require_once 'Message/MultiPart.php';
require_once 'Message/NonMimePart.php';
require_once 'Message/PartChildrenContainer.php';
require_once 'Message/PartFilter.php';
require_once 'Message/PartHeaderContainer.php';
require_once 'Message/PartStreamContainer.php';
require_once 'Message/UUEncodedPart.php';
require_once 'Message.php';
require_once 'Parser/AbstractParser.php';
require_once 'Parser/HeaderParser.php';
require_once 'Parser/IParser.php';
require_once 'Parser/MessageParser.php';
require_once 'Parser/MimeParser.php';
require_once 'Parser/NonMimeParser.php';
require_once 'Parser/ParserManager.php';
require_once 'Parser/Part/ParserPartChildrenContainer.php';
require_once 'Parser/Part/ParserPartChildrenContainerFactory.php';
require_once 'Parser/Part/ParserPartStreamContainer.php';
require_once 'Parser/Part/ParserPartStreamContainerFactory.php';
require_once 'Parser/Part/UUEncodedPartHeaderContainer.php';
require_once 'Parser/Part/UUEncodedPartHeaderContainerFactory.php';
require_once 'Parser/PartBuilder.php';
require_once 'Parser/PartBuilderFactory.php';
require_once 'Parser/Proxy/ParserMessageProxy.php';
require_once 'Parser/Proxy/ParserMessageProxyFactory.php';
require_once 'Parser/Proxy/ParserMimePartProxy.php';
require_once 'Parser/Proxy/ParserMimePartProxyFactory.php';
require_once 'Parser/Proxy/ParserNonMimeMessageProxy.php';
require_once 'Parser/Proxy/ParserNonMimeMessageProxyFactory.php';
require_once 'Parser/Proxy/ParserPartProxy.php';
require_once 'Parser/Proxy/ParserPartProxyFactory.php';
require_once 'Parser/Proxy/ParserUUEncodedPartProxy.php';
require_once 'Parser/Proxy/ParserUUEncodedPartProxyFactory.php';
require_once 'Stream/HeaderStream.php';
require_once 'Stream/MessagePartStream.php';
require_once 'Stream/StreamFactory.php';
use ZBateson\MailMimeParser\MailMimeParser;
use ZBateson\MailMimeParser\Message;
use ZBateson\MailMimeParser\Header\HeaderConsts;
// use an instance of MailMimeParser as a class dependency
$mailParser = new MailMimeParser();
// parse() accepts a string, resource or Psr7 StreamInterface
// pass `true` as the second argument to attach the passed $handle and close
// it when the returned IMessage is destroyed.
$handle = fopen('email.eml', 'r');
$message = $mailParser->parse($handle, false); // returns `IMessage`
// OR: use this procedurally (Message::from also accepts a string,
// resource or Psr7 StreamInterface
// true or false as second parameter doesn't matter if passing a string.
//$string = "Content-Type: text/plain\r\nSubject: Test\r\n\r\nMessage";
//$message = Message::from($string, false);
echo $message->getHeaderValue(HeaderConsts::FROM); // [email protected]
echo $message
->getHeader(HeaderConsts::FROM) // AddressHeader
->getPersonName(); // Person Name
echo $message->getHeaderValue(HeaderConsts::SUBJECT); // The email's subject
echo $message
->getHeader(HeaderConsts::TO) // also AddressHeader
->getAddresses()[0] // AddressPart
->getName(); // Person Name
echo $message
->getHeader(HeaderConsts::CC) // also AddressHeader
->getAddresses()[0] // AddressPart
->getEmail(); // [email protected]
echo $message->getTextContent(); // or getHtmlContent()
echo $message->getHeader('X-Foo'); // for custom or undocumented headers
$att = $message->getAttachmentPart(0); // first attachment
echo $att->getHeaderValue(HeaderConsts::CONTENT_TYPE); // e.g. "text/plain"
echo $att->getHeaderParameter( // value of "charset" part
'content-type',
'charset'
);
echo $att->getContent(); // get the attached file's contents
$stream = $att->getContentStream(); // the file is decoded automatically
$dest = \GuzzleHttp\Psr7\stream_for(
fopen('my-file.ext')
);
\GuzzleHttp\Psr7\copy_to_stream(
$stream, $dest
);
// OR: more simply if saving or copying to another stream
$att->saveContent('my-file.ext'); // writes to my-file.ext
$att->saveContent($stream); // copies to the stream
// close only when $message is no longer being used.
fclose($handle);
@chrisrex it means you need the dependencies Mail-Mime-Parser depends on. If you don't use composer you'll have to manually download and install them (and any dependencies they in turn depend on, etc...)
This Stackoverflow question might help: https://stackoverflow.com/questions/40545795/how-do-i-install-composer-php-packages-without-composer
Thank you zbateson for your answer. Best regards Christoph
@chrisrex I don't use composer in production code either. But I use it to manage dependencies. See my article on autoloaders: https://blog.phpfui.com/benchmarking-php-autoloaders
Reach out to me if you want the code to automate this. Much faster and more secure than using composer in production, and you avoid all those require statements.