Email-MIME-1.925000755000766000024 012237151203 12527 5ustar00rjbsstaff000000000000README100644000766000024 46112237151203 13451 0ustar00rjbsstaff000000000000Email-MIME-1.925 This archive contains the distribution Email-MIME, version 1.925: easy MIME message handling This software is copyright (c) 2004 by Simon Cozens and Casey West. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Changes100644000766000024 1301412237151203 14122 0ustar00rjbsstaff000000000000Email-MIME-1.925Revision history for Perl extension Email::MIME. 1.925 2013-11-08 07:01:03 America/New_York improve reliability of mail reconstruction during walk_parts (thanks, Tomohiro Hosaka!) 1.924 2013-08-10 23:23:55 America/New_York update use of Email::MIME::ContentType to match new, fixed hash keys: type/subtype 1.923 2013-08-08 21:59:02 America/New_York do not consider the part-ending CRLF part of the body avoid undefined warnings in debug_structure [rt.cpan.org #82388] (Thanks, Kurt Anderson) better error message when the given body is a ref but not a scalar ref [rt.cpan.org #59205] 1.922 2013-07-10 08:45:02 America/New_York repackage, fixing version number 1.921 2013-07-01 22:51:01 America/New_York repackage, remove PEP links, update bugtracker 1.920 2013-06-17 do not call parts_set during walk_parts unless the parts have actually changed When trying to decode a body, fall back to 7bit if the encoding is unknown. Trying to create a new body in an unknown encoding is still forbidden. This should make it easier to handle broken messages from "the internet." ("Content-Transfer-Encoding: n"!?) 1.912_01 2013-04-08 try to encode headers based on the header structure, if it has one, rather than treating the header as a big string in all cases; thanks for this work go to Jesse Luehrs 1.911 2012-07-22 require a newer Email::Simple and cope with its improved line ending tweaks 1.910 2011-09-12 document the header_str arg to ->create more thoroughly (i.e., at all) 1.909 2011-09-08 dial the perl prereq back to 5.8.1 by popular demand... actually 1.908 2011-06-01 dial the perl prereq back to 5.8.1 by popular demand 1.907 2011-02-02 require 5.8.5 for sane encoding be more lenient with Content-Tranfser-Encoding values; stop at semicolons 1.906 2010-10-07 update our prereq on Test::More to 0.88 1.905 2010-09-06 fix a long-standing bug that prevent walk_parts from reaching all parts (thanks, Erik Logtenberg) 1.904 2010-09-04 eliminate memory leak in walk_parts (reported by MKANAT, RT #59581) 1.903 2009-12-23 correct typo in body_set_str (RT #53004) (thanks, Herbert Leitz) 1.902 2009-11-11 allow for padding spaces in the Content-Transfer-Encoding header (Geraint Edwards) 1.901 2009-11-05 bump up Email::MIME::Encodings version required 1.900 2009-11-03 merge in Email-MIME-Modifier and Email-MIME-Creator add better support for Unicode with body_str, header_str_set, etc. 1.863 2009-01-30 no code changes add strangely missing copyright information 1.862 2009-01-22 add repository location metadata always require Encode, never MIME::Words; this means that using Email::MIME on pre-5.008 will be difficult, if not impossible if a header can't be decoded, fall back to the raw header move decoding methods to Email::MIME::Header, add header_raw 1.861 2007-11-05 added perl-minver.t -- Email::MIME requires perl >= 5.006 we now require Email::Simple 2.003 1.860 2007-07-13 tentative tweak to tests and C-T-E handling for charset probably needs more research, testing, and fixing 1.859 2007-03-20 minor test improvements add "subparts" method 1.858 2007-02-09 fixed laxity which allowed leading newlines in parts passed to 'new' for instantiation; this only broke when used with Email::Simple 1.998 Shout out to all my former co-workers from General Cinemas unit 858! This version is for you. 1.857 2006-11-27 further severing of Email::MIME from ::Simple's guts 1.856 2006-11-27 reduce the extent to which Email::MIME touches Email::Simple guts improve documentation a bit improve packaging 1.855 2006-11-19 1.854 2006-11-12 fix as_string to work with latest Email::Simple 1.853 2006-11-12 always call header in scalar context when getting content type (thanks, JESSE) 1.852 2006-09-05 avoid some warnings with undef headers or bodies 1.851 2006-08-22 test coverage and layout improvements by SSORICHE 1.85 2006-07-13 avoid memory leak due to circular references (bug 7007, starter patch from MARCB) pod tests 1.81 2004-10-29 Fix bug in headers, now returns list in list context. Dependency updates. Author change. 1.8 Wed Aug 25 10:47:15 BST 2004 Split filename and invent_filename to separate methods, for the Stripper 1.6 Sun Jul 4 21:15:07 BST 2004 Another fix by Casey - this time, don't decode on as_string 1.5 Thu Jul 1 18:38:06 BST 2004 That didn't actually fix the bug at all. 1.4 Thu Jul 1 18:35:32 BST 2004 Only parse attributes if there are some! 1.3 Mon Apr 5 17:25:03 BST 2004 Bug found by Joshua Hoblitt, fixed by Richard Clamp 1.2 Fri Apr 2 09:50:34 BST 2004 Test fix from Richard Clamp 0.01 Thu Apr 10 13:38:09 2003 original version; created by h2xs 1.2 with options -AX -n Email::MIME LICENSE100644000766000024 4373012237151203 13644 0ustar00rjbsstaff000000000000Email-MIME-1.925This software is copyright (c) 2004 by Simon Cozens and Casey West. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Terms of the Perl programming language system itself a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or b) the "Artistic License" --- The GNU General Public License, Version 1, February 1989 --- This software is Copyright (c) 2004 by Simon Cozens and Casey West. This is free software, licensed under: The GNU General Public License, Version 1, February 1989 GNU GENERAL PUBLIC LICENSE Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. 51 Franklin St, Suite 500, Boston, MA 02110-1335 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. The General Public License applies to the Free Software Foundation's software and to any other program whose authors commit to using it. You can use it for your programs, too. When we speak of free software, we are referring to freedom, not price. Specifically, the General Public License is designed to make sure that you have the freedom to give away or sell copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of a such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any work containing the Program or a portion of it, either verbatim or with modifications. Each licensee is addressed as "you". 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this General Public License and to the absence of any warranty; and give any other recipients of the Program a copy of this General Public License along with the Program. You may charge a fee for the physical act of transferring a copy. 2. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option). c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License. d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms. 3. You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal charge for the cost of distribution) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs, or for standard header files or definitions files that accompany that operating system. 4. You may not copy, modify, sublicense, distribute or transfer the Program except as expressly provided under this General Public License. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the Program is void, and will automatically terminate your rights to use the Program under this License. However, parties who have received copies, or rights to use copies, from you under this General Public License will not have their licenses terminated so long as such parties remain in full compliance. 5. By copying, distributing or modifying the Program (or any work based on the Program) you indicate your acceptance of this license to do so, and all its terms and conditions. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. 7. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of the license which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation. 8. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to humanity, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19xx name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (a program to direct compilers to make passes at assemblers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice That's all there is to it! --- The Artistic License 1.0 --- This software is Copyright (c) 2004 by Simon Cozens and Casey West. This is free software, licensed under: The Artistic License 1.0 The Artistic License Preamble The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications. Definitions: - "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. - "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder. - "Copyright Holder" is whoever is named in the copyright or copyrights for the package. - "You" is you, if you're thinking about copying or distributing this Package. - "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.) - "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it. 1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. 3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as ftp.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package. b) use the modified Package only within your corporation or organization. c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version. d) make other distribution arrangements with the Copyright Holder. 4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version. b) accompany the distribution with the machine-readable source of the Package with your modifications. c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version. d) make other distribution arrangements with the Copyright Holder. 5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. 6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package. 7. C or perl subroutines supplied by you and linked into this Package shall not be considered part of this Package. 8. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. 9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. The End dist.ini100644000766000024 55112237151203 14235 0ustar00rjbsstaff000000000000Email-MIME-1.925name = Email-MIME author = Ricardo SIGNES author = Casey West author = Simon Cozens license = Perl_5 copyright_holder = Simon Cozens and Casey West copyright_year = 2004 [@RJBS] [Prereqs] MIME::Types = 1.13 [Encoding] filename = t/files/readme.txt.gz filename = t/Mail/att-1.gif encoding = bytes META.yml100644000766000024 1337112237151203 14106 0ustar00rjbsstaff000000000000Email-MIME-1.925--- abstract: 'easy MIME message handling' author: - 'Ricardo SIGNES ' - 'Casey West ' - 'Simon Cozens ' build_requires: Symbol: 0 Test::More: 0.96 utf8: 0 configure_requires: ExtUtils::MakeMaker: 6.30 dynamic_config: 0 generated_by: 'Dist::Zilla version 5.006, CPAN::Meta::Converter version 2.132830' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 name: Email-MIME requires: Carp: 0 Email::Address: 0 Email::MIME::ContentType: 1.016 Email::MIME::Encodings: 1.314 Email::MessageID: 0 Email::Simple: 2.102 Email::Simple::Creator: 0 Email::Simple::Header: 0 Encode: 1.9801 MIME::Base64: 0 MIME::Types: 1.13 Scalar::Util: 0 parent: 0 perl: 5.008001 strict: 0 warnings: 0 resources: bugtracker: https://github.com/rjbs/Email-MIME/issues homepage: https://github.com/rjbs/Email-MIME repository: https://github.com/rjbs/Email-MIME.git version: 1.925 x_Dist_Zilla: perl: version: 5.019005 plugins: - class: Dist::Zilla::Plugin::Git::GatherDir name: '@RJBS/Git::GatherDir' version: 2.017 - class: Dist::Zilla::Plugin::CheckPrereqsIndexed name: '@RJBS/CheckPrereqsIndexed' version: 0.009 - class: Dist::Zilla::Plugin::CheckExtraTests name: '@RJBS/CheckExtraTests' version: 0.015 - class: Dist::Zilla::Plugin::PromptIfStale name: '@RJBS/RJBS-Outdated' version: 0.009 - class: Dist::Zilla::Plugin::PromptIfStale name: '@RJBS/CPAN-Outdated' version: 0.009 - class: Dist::Zilla::Plugin::PruneCruft name: '@RJBS/@Filter/PruneCruft' version: 5.006 - class: Dist::Zilla::Plugin::ManifestSkip name: '@RJBS/@Filter/ManifestSkip' version: 5.006 - class: Dist::Zilla::Plugin::MetaYAML name: '@RJBS/@Filter/MetaYAML' version: 5.006 - class: Dist::Zilla::Plugin::License name: '@RJBS/@Filter/License' version: 5.006 - class: Dist::Zilla::Plugin::Readme name: '@RJBS/@Filter/Readme' version: 5.006 - class: Dist::Zilla::Plugin::ExecDir name: '@RJBS/@Filter/ExecDir' version: 5.006 - class: Dist::Zilla::Plugin::ShareDir name: '@RJBS/@Filter/ShareDir' version: 5.006 - class: Dist::Zilla::Plugin::MakeMaker name: '@RJBS/@Filter/MakeMaker' version: 5.006 - class: Dist::Zilla::Plugin::Manifest name: '@RJBS/@Filter/Manifest' version: 5.006 - class: Dist::Zilla::Plugin::TestRelease name: '@RJBS/@Filter/TestRelease' version: 5.006 - class: Dist::Zilla::Plugin::ConfirmRelease name: '@RJBS/@Filter/ConfirmRelease' version: 5.006 - class: Dist::Zilla::Plugin::UploadToCPAN name: '@RJBS/@Filter/UploadToCPAN' version: 5.006 - class: Dist::Zilla::Plugin::AutoPrereqs name: '@RJBS/AutoPrereqs' version: 5.006 - class: Dist::Zilla::Plugin::Git::NextVersion name: '@RJBS/Git::NextVersion' version: 2.017 - class: Dist::Zilla::Plugin::PkgVersion name: '@RJBS/PkgVersion' version: 5.006 - class: Dist::Zilla::Plugin::MetaConfig name: '@RJBS/MetaConfig' version: 5.006 - class: Dist::Zilla::Plugin::MetaJSON name: '@RJBS/MetaJSON' version: 5.006 - class: Dist::Zilla::Plugin::NextRelease name: '@RJBS/NextRelease' version: 5.006 - class: Dist::Zilla::Plugin::Test::ChangesHasContent name: '@RJBS/Test::ChangesHasContent' version: 0.006 - class: Dist::Zilla::Plugin::PodSyntaxTests name: '@RJBS/PodSyntaxTests' version: 5.006 - class: Dist::Zilla::Plugin::ReportVersions::Tiny name: '@RJBS/ReportVersions::Tiny' version: 1.10 - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: test type: requires name: '@RJBS/TestMoreWithSubtests' version: 5.006 - class: Dist::Zilla::Plugin::PodWeaver config: Dist::Zilla::Plugin::PodWeaver: config_plugin: '@RJBS' finder: - ':InstallModules' - ':ExecFiles' name: '@RJBS/PodWeaver' version: 4.001 - class: Dist::Zilla::Plugin::GithubMeta name: '@RJBS/GithubMeta' version: 0.42 - class: Dist::Zilla::Plugin::Git::Check name: '@RJBS/@Git/Check' version: 2.017 - class: Dist::Zilla::Plugin::Git::Commit name: '@RJBS/@Git/Commit' version: 2.017 - class: Dist::Zilla::Plugin::Git::Tag name: '@RJBS/@Git/Tag' version: 2.017 - class: Dist::Zilla::Plugin::Git::Push name: '@RJBS/@Git/Push' version: 2.017 - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: runtime type: requires name: Prereqs version: 5.006 - class: Dist::Zilla::Plugin::Encoding name: Encoding version: 5.006 - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' version: 5.006 - class: Dist::Zilla::Plugin::FinderCode name: ':IncModules' version: 5.006 - class: Dist::Zilla::Plugin::FinderCode name: ':TestFiles' version: 5.006 - class: Dist::Zilla::Plugin::FinderCode name: ':ExecFiles' version: 5.006 - class: Dist::Zilla::Plugin::FinderCode name: ':ShareFiles' version: 5.006 - class: Dist::Zilla::Plugin::FinderCode name: ':MainModule' version: 5.006 zilla: class: Dist::Zilla::Dist::Builder config: is_trial: 0 version: 5.006 MANIFEST100644000766000024 107412237151203 13743 0ustar00rjbsstaff000000000000Email-MIME-1.925Changes LICENSE MANIFEST META.json META.yml Makefile.PL README dist.ini lib/Email/MIME.pm lib/Email/MIME/Creator.pm lib/Email/MIME/Encode.pm lib/Email/MIME/Header.pm lib/Email/MIME/Modifier.pm t/000-report-versions-tiny.t t/Mail/att-1.gif t/Mail/mail-1 t/Mail/mail-2 t/Mail/nested-parts t/auto_create.t t/basic.t t/content_id.t t/ct_attrs.t t/dispo.t t/disposition.t t/encoding.t t/files/readme.txt.gz t/multipart.t t/nested-parts.t t/part-encs.t t/parts.t t/read-nested.t t/singlepart.t t/unicode.t t/walk-parts.t xt/release/changes_has_content.t xt/release/pod-syntax.t t000755000766000024 012237151203 12713 5ustar00rjbsstaff000000000000Email-MIME-1.925basic.t100644000766000024 216712237151203 14327 0ustar00rjbsstaff000000000000Email-MIME-1.925/t#!perl # vim:ft=perl use strict; use warnings; use Test::More 'no_plan'; use Email::MIME::Encodings; use_ok("Email::MIME"); open IN, "t/Mail/mail-1" or die $!; my $string = do { local $/; }; my $email = Email::MIME->new($string); isa_ok($email, "Email::MIME"); my ($part) = $email->parts; isa_ok($part, "Email::MIME"); my $body = $part->body; is( $body, Email::MIME::Encodings::decode(base64 => $email->body_raw), "Internally consistent" ); open(GIF, "t/Mail/att-1.gif") or die $!; binmode GIF; my $gif = do { local $/; }; is($body, $gif, "Externally consistent"); is($email->filename, "1.gif", "Filename is correct"); my $header = $email->header('X-MultiHeader'); my @headers = $email->header('X-MultiHeader'); ok $header, 'got back a header in scalar context'; ok !ref($header), 'header in scalar context is not ref'; is scalar(@headers), 3, 'got all three back in list context'; # This test would be stupider if it hadn't broken in a release. # There are to many reliances on Email::Simple guts, at this point. # -- rjbs, 2006-10-15 eval { $email->as_string }; is($@, '', "we can stringify without dying"); dispo.t100644000766000024 221012237151203 14351 0ustar00rjbsstaff000000000000Email-MIME-1.925/t#!perl # vim:ft=perl use strict; use warnings; use Test::More 'no_plan'; use Email::MIME::Encodings; use MIME::Types; use_ok("Email::MIME"); my $txt_ext = join '|', MIME::Types->new->type('text/plain')->extensions; open IN, "t/Mail/mail-2" or die $!; undef $/; my $string = ; my $obj = Email::MIME->new($string); isa_ok($obj, "Email::MIME"); is($obj->debug_structure,<parts)[0]->parts; my $filename = $parts[0]->filename(1); like($filename, qr/attachment-\d+-0\.(?:$txt_ext)/, "Filename correct"); my $filename2 = $parts[1]->filename(1); like($filename2, qr/attachment-\d+-1\.html/, "Filename correct"); is($filename,$parts[0]->filename(1), "Filename consistent"); my $image = ($obj->parts)[1]; is( $image->filename, "image001.gif", "got the image chunk" ); unlike( $image->body_raw, qr{NextPart}, "and not the epilogue" ); parts.t100644000766000024 247412237151203 14400 0ustar00rjbsstaff000000000000Email-MIME-1.925/tuse strict; use warnings; use Test::More tests => 22; use_ok 'Email::MIME'; use_ok 'Email::MIME::Modifier'; my $email = Email::MIME->new(<<__MESSAGE__); Content-Disposition: inline Engine Engine number nine. __MESSAGE__ isa_ok $email, 'Email::MIME'; is scalar($email->parts), 1, 'only one part'; $email->parts_set([ Email::MIME->new(<<__MESSAGE__), Email::MIME->new(<<__MESSAGE2__) ]); Content-Type: text/plain Part one, part one! __MESSAGE__ Content-Transfer-Encoding: base64 UGFydCB0d28sIHBhcnQgdHdvIQo= __MESSAGE2__ is scalar($email->parts), 2, 'two parts'; is +($email->parts)[1]->body, qq[Part two, part two!\n], 'part two decoded'; $email->parts_add([ $email->parts ]); is scalar($email->parts), 4, 'four parts'; is +($email->parts)[1]->body, qq[Part two, part two!\n], 'part two decoded again'; is +($email->parts)[3]->body, qq[Part two, part two!\n], 'part four decoded'; $email->walk_parts(sub { my $part = shift; isa_ok $part, 'Email::MIME'; $part->encoding_set('base64') if $part->parts <= 1; $part->body_set( "foo\nbar" ) if $part->parts <= 1; }); $email->walk_parts(sub { my $part = shift; if ( $part->parts <= 1 ) { is $part->header('Content-Transfer-Encoding'), 'base64', 'walkdown encoding worked'; is $part->body, "foo\nbar", 'walkdown body_set worked'; } }); META.json100644000766000024 2207412237151203 14256 0ustar00rjbsstaff000000000000Email-MIME-1.925{ "abstract" : "easy MIME message handling", "author" : [ "Ricardo SIGNES ", "Casey West ", "Simon Cozens " ], "dynamic_config" : 0, "generated_by" : "Dist::Zilla version 5.006, CPAN::Meta::Converter version 2.132830", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : "2" }, "name" : "Email-MIME", "prereqs" : { "configure" : { "requires" : { "ExtUtils::MakeMaker" : "6.30" } }, "develop" : { "requires" : { "Test::Pod" : "1.41", "version" : "0.9901" } }, "runtime" : { "requires" : { "Carp" : "0", "Email::Address" : "0", "Email::MIME::ContentType" : "1.016", "Email::MIME::Encodings" : "1.314", "Email::MessageID" : "0", "Email::Simple" : "2.102", "Email::Simple::Creator" : "0", "Email::Simple::Header" : "0", "Encode" : "1.9801", "MIME::Base64" : "0", "MIME::Types" : "1.13", "Scalar::Util" : "0", "parent" : "0", "perl" : "5.008001", "strict" : "0", "warnings" : "0" } }, "test" : { "requires" : { "Symbol" : "0", "Test::More" : "0.96", "utf8" : "0" } } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://github.com/rjbs/Email-MIME/issues" }, "homepage" : "https://github.com/rjbs/Email-MIME", "repository" : { "type" : "git", "url" : "https://github.com/rjbs/Email-MIME.git", "web" : "https://github.com/rjbs/Email-MIME" } }, "version" : "1.925", "x_Dist_Zilla" : { "perl" : { "version" : "5.019005" }, "plugins" : [ { "class" : "Dist::Zilla::Plugin::Git::GatherDir", "name" : "@RJBS/Git::GatherDir", "version" : "2.017" }, { "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed", "name" : "@RJBS/CheckPrereqsIndexed", "version" : "0.009" }, { "class" : "Dist::Zilla::Plugin::CheckExtraTests", "name" : "@RJBS/CheckExtraTests", "version" : "0.015" }, { "class" : "Dist::Zilla::Plugin::PromptIfStale", "name" : "@RJBS/RJBS-Outdated", "version" : "0.009" }, { "class" : "Dist::Zilla::Plugin::PromptIfStale", "name" : "@RJBS/CPAN-Outdated", "version" : "0.009" }, { "class" : "Dist::Zilla::Plugin::PruneCruft", "name" : "@RJBS/@Filter/PruneCruft", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::ManifestSkip", "name" : "@RJBS/@Filter/ManifestSkip", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::MetaYAML", "name" : "@RJBS/@Filter/MetaYAML", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::License", "name" : "@RJBS/@Filter/License", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::Readme", "name" : "@RJBS/@Filter/Readme", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::ExecDir", "name" : "@RJBS/@Filter/ExecDir", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::ShareDir", "name" : "@RJBS/@Filter/ShareDir", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::MakeMaker", "name" : "@RJBS/@Filter/MakeMaker", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::Manifest", "name" : "@RJBS/@Filter/Manifest", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::TestRelease", "name" : "@RJBS/@Filter/TestRelease", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::ConfirmRelease", "name" : "@RJBS/@Filter/ConfirmRelease", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::UploadToCPAN", "name" : "@RJBS/@Filter/UploadToCPAN", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::AutoPrereqs", "name" : "@RJBS/AutoPrereqs", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::Git::NextVersion", "name" : "@RJBS/Git::NextVersion", "version" : "2.017" }, { "class" : "Dist::Zilla::Plugin::PkgVersion", "name" : "@RJBS/PkgVersion", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::MetaConfig", "name" : "@RJBS/MetaConfig", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::MetaJSON", "name" : "@RJBS/MetaJSON", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::NextRelease", "name" : "@RJBS/NextRelease", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::Test::ChangesHasContent", "name" : "@RJBS/Test::ChangesHasContent", "version" : "0.006" }, { "class" : "Dist::Zilla::Plugin::PodSyntaxTests", "name" : "@RJBS/PodSyntaxTests", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::ReportVersions::Tiny", "name" : "@RJBS/ReportVersions::Tiny", "version" : "1.10" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "test", "type" : "requires" } }, "name" : "@RJBS/TestMoreWithSubtests", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::PodWeaver", "config" : { "Dist::Zilla::Plugin::PodWeaver" : { "config_plugin" : "@RJBS", "finder" : [ ":InstallModules", ":ExecFiles" ] } }, "name" : "@RJBS/PodWeaver", "version" : "4.001" }, { "class" : "Dist::Zilla::Plugin::GithubMeta", "name" : "@RJBS/GithubMeta", "version" : "0.42" }, { "class" : "Dist::Zilla::Plugin::Git::Check", "name" : "@RJBS/@Git/Check", "version" : "2.017" }, { "class" : "Dist::Zilla::Plugin::Git::Commit", "name" : "@RJBS/@Git/Commit", "version" : "2.017" }, { "class" : "Dist::Zilla::Plugin::Git::Tag", "name" : "@RJBS/@Git/Tag", "version" : "2.017" }, { "class" : "Dist::Zilla::Plugin::Git::Push", "name" : "@RJBS/@Git/Push", "version" : "2.017" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "runtime", "type" : "requires" } }, "name" : "Prereqs", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::Encoding", "name" : "Encoding", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":IncModules", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":TestFiles", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExecFiles", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ShareFiles", "version" : "5.006" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":MainModule", "version" : "5.006" } ], "zilla" : { "class" : "Dist::Zilla::Dist::Builder", "config" : { "is_trial" : "0" }, "version" : "5.006" } } } unicode.t100644000766000024 411212237151203 14664 0ustar00rjbsstaff000000000000Email-MIME-1.925/tuse strict; use warnings; use Test::More 'no_plan'; use utf8; use Encode; require_ok 'Email::MIME::Creator'; { my $email = Email::MIME->create( header => [ Test => '=?UTF-8?B?SnVsacOhbg==?=', ], header_str => [ Test => '=?UTF-8?B?SnVsacOhbg==?=', Test => 'Julián', ], body => "Hi", ); my @header = $email->header('Test'); is($header[0], 'Julián', "1st header decodes to J..."); is($header[1], '=?UTF-8?B?SnVsacOhbg==?=', "2nd header decodes to =?..?="); is($header[2], 'Julián', "3rd header decodes to J..."); } { my $crlf = "\x0d\x0a"; my $name = 'Ricardo Julián Besteiro Signes'; my $body = "Dear $name,${crlf}${crlf}You're great!${crlf}${crlf}" . "-- $crlf$name$crlf"; my $email = Email::MIME->create( header_str => [ 'To-Name' => $name, 'From-Name' => 'Ricardo J. B. Signes', ], attributes => { charset => 'utf-8', encoding => 'quoted-printable', }, body_str => $body, ); ok($email->body ne $body, "the ->body method doesn't get us the input"); is($email->body_str, $body, "the ->body_str does get us the input"); is( length $email->body_str, length $body, "...and lengths are the same", ); } { my @subjects = ( "test test test test test test test test tést te (12 34)", # unicode "test test test test test test test test test te (12 34)", # not ); my @tos = ( 'Döy ', # unicode 'Doy ', # not ); for my $subject (@subjects) { for my $to (@tos) { my $email = Email::MIME->create( header_str => [ Subject => $subject, To => $to, ], body => "...", ); is(scalar($email->header('Subject')), $subject, "Subject header is correct"); is(scalar($email->header('To')), $to, "To header is correct"); like($email->as_string, qr/test\@example\.com/, "address isn't encoded"); like($email->as_string, qr/\A\p{ASCII}*\z/, "email doesn't contain any non-ascii characters"); } } } Makefile.PL100644000766000024 353712237151203 14572 0ustar00rjbsstaff000000000000Email-MIME-1.925 use strict; use warnings; use 5.008001; use ExtUtils::MakeMaker 6.30; my %WriteMakefileArgs = ( "ABSTRACT" => "easy MIME message handling", "AUTHOR" => "Ricardo SIGNES , Casey West , Simon Cozens ", "BUILD_REQUIRES" => {}, "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => "6.30" }, "DISTNAME" => "Email-MIME", "EXE_FILES" => [], "LICENSE" => "perl", "NAME" => "Email::MIME", "PREREQ_PM" => { "Carp" => 0, "Email::Address" => 0, "Email::MIME::ContentType" => "1.016", "Email::MIME::Encodings" => "1.314", "Email::MessageID" => 0, "Email::Simple" => "2.102", "Email::Simple::Creator" => 0, "Email::Simple::Header" => 0, "Encode" => "1.9801", "MIME::Base64" => 0, "MIME::Types" => "1.13", "Scalar::Util" => 0, "parent" => 0, "strict" => 0, "warnings" => 0 }, "TEST_REQUIRES" => { "Symbol" => 0, "Test::More" => "0.96", "utf8" => 0 }, "VERSION" => "1.925", "test" => { "TESTS" => "t/*.t" } ); my %FallbackPrereqs = ( "Carp" => 0, "Email::Address" => 0, "Email::MIME::ContentType" => "1.016", "Email::MIME::Encodings" => "1.314", "Email::MessageID" => 0, "Email::Simple" => "2.102", "Email::Simple::Creator" => 0, "Email::Simple::Header" => 0, "Encode" => "1.9801", "MIME::Base64" => 0, "MIME::Types" => "1.13", "Scalar::Util" => 0, "Symbol" => 0, "Test::More" => "0.96", "parent" => 0, "strict" => 0, "utf8" => 0, "warnings" => 0 ); unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) { delete $WriteMakefileArgs{TEST_REQUIRES}; delete $WriteMakefileArgs{BUILD_REQUIRES}; $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs; } delete $WriteMakefileArgs{CONFIGURE_REQUIRES} unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; WriteMakefile(%WriteMakefileArgs); ct_attrs.t100644000766000024 340212237151203 15062 0ustar00rjbsstaff000000000000Email-MIME-1.925/tuse strict; use warnings; use Test::More tests => 10; use_ok 'Email::MIME'; use_ok 'Email::MIME::Modifier'; use_ok 'Email::MIME::ContentType'; my $email = Email::MIME->new(<<__MESSAGE__); Content-Type: text/plain; charset="us-ascii" __MESSAGE__ sub ct { return ( type => $_[0], # okay! subtype => $_[1], # okay! discrete => $_[0], # dumb! composite => $_[1], # dumb! ); } is_deeply( parse_content_type($email->header('Content-Type')), { ct(qw(text plain)), attributes => { charset => 'us-ascii', }, }, 'default ct worked' ); $email->charset_set( 'UTF-8' ); is_deeply( parse_content_type($email->header('Content-Type')), { ct(qw(text plain)), attributes => { charset => 'UTF-8', }, }, 'ct with new charset worked' ); $email->charset_set( undef ); is_deeply( parse_content_type($email->header('Content-Type')), { ct(qw(text plain)), attributes => { }, }, 'ct with no charset worked' ); $email->format_set( 'flowed' ); is_deeply( parse_content_type($email->header('Content-Type')), { ct(qw(text plain)), attributes => { format => 'flowed', }, }, 'ct with format worked' ); $email->name_set( 'foo.txt' ); is_deeply( parse_content_type($email->header('Content-Type')), { ct(qw(text plain)), attributes => { format => 'flowed', name => 'foo.txt', }, }, 'ct with name worked' ); is $email->header('Content-Type'), 'text/plain; format="flowed"; name="foo.txt"', 'ct format is correct'; $email->boundary_set( 'marker' ); is_deeply( parse_content_type($email->header('Content-Type')), { ct(qw(text plain)), attributes => { boundary => 'marker', format => 'flowed', name => 'foo.txt', }, }, 'ct with boundary worked' ); encoding.t100644000766000024 603012237151203 15025 0ustar00rjbsstaff000000000000Email-MIME-1.925/tuse strict; use warnings; use Test::More tests => 20; use_ok 'Email::MIME'; use_ok 'Email::MIME::Modifier'; for my $encode ('7bit', '7bit; foo') { my $email = Email::MIME->new(<<__MESSAGE__); Content-Transfer-Encoding: $encode Content-Type: text/plain Hello World! I like you! __MESSAGE__ is $email->body, qq[Hello World!\nI like you!\n], 'plain works'; is $email->body_raw, qq[Hello World!\nI like you!\n], 'plain raw works'; is $email->header('Content-Transfer-Encoding'), $encode, 'plain encoding works'; } my $email = Email::MIME->new(<<__MESSAGE__); Content-Transfer-Encoding: 7bit Content-Type: text/plain Hello World! I like you! __MESSAGE__ is $email->body, qq[Hello World!\nI like you!\n], 'plain works'; is $email->body_raw, qq[Hello World!\nI like you!\n], 'plain raw works'; is $email->header('Content-Transfer-Encoding'), '7bit', 'plain encoding works'; $email->encoding_set('base64'); is $email->body, qq[Hello World!\nI like you!\n], 'base64 works'; is( $email->body_raw, qq[SGVsbG8gV29ybGQhCkkgbGlrZSB5b3UhCg==\x0d\x0a], 'base64 raw works', ); is( $email->header('Content-Transfer-Encoding'), 'base64', 'base64 encoding works', ); $email->encoding_set('binary'); is( $email->body, qq[Hello World!\nI like you!\n], 'binary works', ); is( $email->body_raw, qq[Hello World!\nI like you!\n], 'binary raw works', ); is( $email->header('Content-Transfer-Encoding'), 'binary', 'binary encoding works', ); my $long_line = 'Long line! ' x 100; $email->encoding_set('quoted-printable'); $email->body_set(<<__MESSAGE__); $long_line __MESSAGE__ my $qp_expect = qq{Long line! Long line! Long line! Long line! Long line! Long line! Long line= ! Long line! Long line! Long line! Long line! Long line! Long line! Long li= ne! Long line! Long line! Long line! Long line! Long line! Long line! Long = line! Long line! Long line! Long line! Long line! Long line! Long line! Lon= g line! Long line! Long line! Long line! Long line! Long line! Long line! L= ong line! Long line! Long line! Long line! Long line! Long line! Long line!= Long line! Long line! Long line! Long line! Long line! Long line! Long lin= e! Long line! Long line! Long line! Long line! Long line! Long line! Long l= ine! Long line! Long line! Long line! Long line! Long line! Long line! Long= line! Long line! Long line! Long line! Long line! Long line! Long line! Lo= ng line! Long line! Long line! Long line! Long line! Long line! Long line! = Long line! Long line! Long line! Long line! Long line! Long line! Long line= ! Long line! Long line! Long line! Long line! Long line! Long line! Long li= ne! Long line! Long line! Long line! Long line! Long line! Long line! Long = line! Long line! Long line! Long line! Long line!=20\x0d\x0a}; $qp_expect =~ s/=\n/=\x0d\x0a/g; is( $email->body, qq[$long_line\x0d\x0a], 'quoted-printable + body_set works' ); is( $email->body_raw, $qp_expect, 'quoted-printable + body_set raw works', ); is( $email->header('Content-Transfer-Encoding'), 'quoted-printable', 'quoted-printble + body_set encoding works', ); Mail000755000766000024 012237151203 13575 5ustar00rjbsstaff000000000000Email-MIME-1.925/tmail-1100644000766000024 352012237151203 14740 0ustar00rjbsstaff000000000000Email-MIME-1.925/t/MailFrom simon@simon-cozens.org Tue Apr 15 20:24:47 2003 X-MultiHeader: one X-MultiHeader: two X-MultiHeader: three From: Simon Cozens To: test Bcc: simon@twingle.net Subject: foo Mime-Version: 1.0 Content-Type: image/gif Content-Disposition: attachment; filename="1.gif" Content-Transfer-Encoding: base64 X-Operating-System: Linux deep-dark-truthful-mirror 2.4.9 X-POM: The Moon is Waxing Gibbous (98% of Full) X-Addresses: The simon@cozens.net address is deprecated due to being broken. simon@brecon.co.uk still works, but simon-cozens.org or netthink.co.uk are preferred. X-Mutt-Fcc: =outbox-200304 Status: RO Content-Length: 1205 Lines: 17 R0lGODlhDAAMAPcAAAAAAAgICBAQEBgYGCkpKTExMTk5OUpKSoyMjJSUlJycnKWlpbW1tc7O zufn5+/v7/f39/////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// /////////////////////////////////ywAAAAADAAMAAAIXwAjRICQwIAAAQYUQBAYwUEB AAACEIBYwMHAhxARNIAIoAAEBBAPOICwkSMCjBAXlKQYgCMABSsjtuQI02UAlC9jFgBJMyYC CCgRMODoseFElx0tCvxYIEAAAwkWRggIADs= mail-2100644000766000024 30630612237151203 15011 0ustar00rjbsstaff000000000000Email-MIME-1.925/t/MailReceived: from gold.ocn.ne.jp ([211.6.83.184] helo=smtp.gold.ocn.ne.jp) by alibi.simon-cozens.org with esmtp (Exim 3.35 #1 (Debian)) id 1AcHqO-0003BP-00 for ; Fri, 02 Jan 2004 05:27:32 +0000 Received: from mcc (p5129-ipad01otsu.shiga.ocn.ne.jp [218.43.145.129]) by smtp.gold.ocn.ne.jp (Postfix) with ESMTP id 69B9430FC for ; Fri, 2 Jan 2004 14:27:28 +0900 (JST) From: "Martin & Julie Crowhurst" To: "'Simon Cozens'" Subject: The usual quick fire questions Date: Fri, 2 Jan 2004 14:27:19 +0900 Message-ID: <000001c3d0f1$1857f860$050aa8c0@mcc> MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_000_0001_01C3D13C.8846CC50" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook, Build 10.0.4510 Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 Status: RO Content-Length: 100609 Lines: 1807 This is a multi-part message in MIME format. ------=_NextPart_000_0001_01C3D13C.8846CC50 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0002_01C3D13C.884B8740" ------=_NextPart_001_0002_01C3D13C.884B8740 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Happy New Year. Is there anyway to access the AW website stats for last year? The inclusion of a little movement on the quiz box of the index page seems to have worked as a means of attracting people to look at the quizzes, in December they were appear higher in the ranking of viewed pages. No multitudes, but enough to make ever more curios for the results page compiled from the survey data. Any progress? Martin ------=_NextPart_001_0002_01C3D13C.884B8740 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Happy New Year.

 

Is there anyway to access the AW website stats f= or last year?

 

The inclusion of a little movement on the quiz b= ox of the index page seems to have worked as a means of attracting people to look= at the quizzes, in December they were appear higher in the ranking of viewed pages. No multitudes, but enough to make ever more curios for the results p= age compiled from the survey data. Any progress?

 

Martin

------=_NextPart_001_0002_01C3D13C.884B8740-- ------=_NextPart_000_0001_01C3D13C.8846CC50 Content-Type: application/octet-stream; name="image001.gif" Content-Transfer-Encoding: base64 Content-ID: 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 bLJIX11coBxfBsHjoVETj6zTDZWXT5o1cXAN0iVSHjhF6eRMkflsKPbWw6Zw UHMvXFrYhU6ZopHYbj+IUeXcCgg/thBvDr+qg31qGILv5E5AuxyoHcsUxBfx SZ0RgpckNabTgAFVpFLigyixc1CYimmONkQo+6iZLtZc8SylxOb7vhTMUlip cyB9E6t6aD8LXfJEI/81J3ReWpDhCSutcFioXewUl7A6o0GqEqA7jxWzxMGp nPAsldQuebfVJYKrouEbTD3YtriNJG9VdCstXHO0pbFSspmEIlETZqedSY2I GJygq66IFHcRlGfkvBy8CMG9weVsI5iY6YmQySwhRnS2tA3IQn5yxuZJj6fs 9Ai3Voq5VWkscQbtoRbv6hdxZfS40kzjR1Y5lDGCZKLNRepooZpEoP0LiolE nl8zYrq4Qpe0pblnjDQ0uUmOEK60ba+6Hote4PZgrBecrFIztyBrpdSi3SuY RA30PBGB03fSLdDMFEukVyDTu3yA3RXhK1N4wqWI+5jqcoO7RXcab2CCmc4s hK2jWfoiUJcLcq+Jc5WnVxorp4tjJue42NYKmQ00ZcmuiGKcK1ZC7lQFiQAA Ow== ------=_NextPart_000_0001_01C3D13C.8846CC50-- multipart.t100644000766000024 174412237151203 15267 0ustar00rjbsstaff000000000000Email-MIME-1.925/tuse strict; use warnings; use Test::More qw[no_plan]; use Carp; $SIG{__WARN__} = sub { Carp::cluck @_ }; use_ok 'Email::MIME::Creator'; my $hi = Email::MIME->create(body => "Hi"); my $hello = Email::MIME->create(body => "Hello"); my $howdy = Email::MIME->create(body => "Howdy"); my $all_his = Email::MIME->create( attributes => { content_type => 'multipart/alternative', }, parts => [ $hi, $howdy, $hello ], ); is scalar($all_his->parts), 3, 'three parts'; my $email = Email::MIME->create( parts => [ Email::MIME->create( attributes => { charset => 'UTF-8', disposition => 'inline', }, body => "Intro", ), $all_his, ], ); is scalar($email->parts), 2, 'two parts for email'; is scalar(($email->parts)[-1]->parts), 3, 'three parts for all_his'; my @parts = ($email->parts)[-1]->parts; is $parts[0]->body_str, 'Hi'; is $parts[1]->body_str, 'Howdy'; is $parts[2]->body_str, 'Hello'; part-encs.t100644000766000024 316412237151203 15140 0ustar00rjbsstaff000000000000Email-MIME-1.925/tuse strict; use warnings; use Test::More; plan tests => 11; use_ok 'Email::MIME'; use_ok 'Email::MIME::Modifier'; use_ok 'Email::MIME::Creator'; use Symbol qw(gensym); my $file = do { my $fh = gensym; open $fh, "; }; { my $two_parts = Email::MIME->create(parts => [ $file, $file ]); my @parts = $two_parts->parts; for my $part (@parts) { is( $part->header('Content-Transfer-Encoding'), 'base64', "binary part got base64 encoded (1/2)", ); is( $part->header('Content-Transfer-Encoding'), 'base64', "binary part got base64 encoded (1/2)", ); } } { my $one_part = Email::MIME->create(parts => [ $file ]); my @parts = $one_part->parts; for my $part (@parts) { is( $part->header('Content-Transfer-Encoding'), 'base64', "binary part got base64 encoded (1/1)", ); } } { my $one_part = Email::MIME->create(parts => [ "This is a normal string\n" ]); my @parts = $one_part->parts; for my $part (@parts) { is( $part->header('Content-Transfer-Encoding'), '7bit', "single text part got (stayed) 7bit encoded (1/1)", ); } } { my $two_parts = Email::MIME->create( parts => [ "This is a normal string\n", $file, ] ); my @parts = $two_parts->parts; is( $parts[0]->header('Content-Transfer-Encoding'), '7bit', "text part got (stayed) 7bit encoded (1/2)", ); is( $parts[1]->header('Content-Transfer-Encoding'), 'base64', "binary part got base64 encoded (2/2)", ); } content_id.t100644000766000024 344012237151203 15367 0ustar00rjbsstaff000000000000Email-MIME-1.925/tuse strict; use warnings; use Test::More tests => 19; use_ok 'Email::MIME'; my $email = Email::MIME->new(<<'__MESSAGE__'); From: me@example.com To: you@example.com __MESSAGE__ isa_ok $email, 'Email::MIME'; my $email2 = Email::MIME->new($email->as_string); isa_ok $email2, 'Email::MIME'; my @parts = ( q[Part one], q[Part two] ); $email->content_type_set('multipart/mixed'); $email->parts_set([map Email::MIME->new("Header: Foo\n\n$_"), @parts]); is scalar($email->parts), 2, 'two parts'; like $email->content_type, qr[multipart/mixed], 'proper content_type'; my @email_cids; $email->walk_parts(sub{ return if $_[0] == $email; push @email_cids, shift->header('Content-ID'); }); is scalar(@email_cids), 2, 'two content ids'; ok $_, "$_ defined" for @email_cids; isnt $email_cids[0], $email_cids[1], 'not the same'; $email2->parts_set([map Email::MIME->new("Header: Foo\n\n$_"), @parts]); $email2->content_type_set('multipart/alternative'); is scalar($email2->parts), 2, 'two parts'; like $email2->content_type, qr[multipart/alternative], 'proper content_type'; my @email2_cids; $email2->walk_parts(sub{ return if $_[0] == $email2; push @email2_cids, shift->header('Content-ID'); }); is scalar(@email2_cids), 2, 'two content ids'; ok $_, "$_ defined" for @email2_cids; is $email2_cids[0], $email2_cids[1], 'the same'; $email2->content_type_set('multipart/alternative'); $email2->parts_set([map Email::MIME->new("Header: Foo\n\n$_"), $parts[0]]); is scalar($email2->parts), 1, 'one part'; like $email2->content_type, qr[multipart/alternative], 'proper content_type'; $email2->content_type_set('text/plain'); $email2->parts_set([map Email::MIME->new("Header: Foo\n\n$_"), $parts[0]]); is scalar($email2->parts), 1, 'one part'; like $email2->content_type, qr[text/plain], 'proper content_type'; singlepart.t100644000766000024 153712237151203 15416 0ustar00rjbsstaff000000000000Email-MIME-1.925/tuse strict; use warnings; use Test::More qw[no_plan]; use_ok 'Email::MIME::Creator'; my $email = Email::MIME->create( header => [ From => 'me', To => 'you', Subject => 'test', ], attributes => { encoding => 'base64', }, body => q[ This is my singlepart message. It's base64 encoded. ] ); isa_ok $email, 'Email::MIME'; $email->header_set(Date => ()); my $expected_string = <<'END_STRING'; From: me To: you Subject: test MIME-Version: 1.0 Content-Transfer-Encoding: base64 ClRoaXMgaXMgbXkgc2luZ2xlcGFydCBtZXNzYWdlLgpJdCdzIGJhc2U2NCBlbmNvZGVkLgo= END_STRING my $expected_body = <<'END_BODY'; This is my singlepart message. It's base64 encoded. END_BODY $expected_string =~ s/\n/\x0d\x0a/g; is $email->as_string, $expected_string, 'as_string matches'; is $email->body, $expected_body, 'body matches'; walk-parts.t100644000766000024 436612237151203 15336 0ustar00rjbsstaff000000000000Email-MIME-1.925/tuse strict; use warnings; use Test::More 0.88; use Email::MIME; my $called_parts_set = 0; { package Email::MIME::Metered; BEGIN { our @ISA = qw(Email::MIME); } sub parts_set { $called_parts_set++ if (caller(2))[3] eq 'Email::MIME::walk_parts'; my $self = shift; $self->SUPER::parts_set(@_); } } my $email; { local $/; $email = Email::MIME::Metered->new(); } my @types; $email->walk_parts(sub { my ($part) = @_; push @types, $part->content_type; }); is_deeply( \@types, [ 'multipart/mixed; boundary="----=_Part_13986_26026450.1275360964578"', 'multipart/related; boundary="----=_Part_13987_10977679.1275360964578"', 'text/html; charset=iso-8859-1', 'image/gif', ], "walk_parts descends into all parts", ); is($called_parts_set, 0, "didn't parts_set"); my $i = 1; $email->walk_parts(sub { return if $i--; $_[0] = Email::MIME::Metered->create( header => [ From => 'me', To => 'you', Subject => 'test', ], parts => [ q[Part one], q[Part two], (join '', map { chr } 1 .. 255), ], ); }); is($called_parts_set, 1, "called parts_set once"); like($email->as_string, qr/Part one/); $email->walk_parts(sub { if ($_[0]->body and $_[0]->body eq 'Part one') { $_[0] = Email::MIME->create( body => 'Part ONE', ); } }); like($email->as_string, qr/Part ONE/); done_testing; __DATA__ Received: from mx ([192.168.16.15]) by mbox (Dovecot) with LMTP id 3iaQF1x2BE for ; Tue, 01 Jun 2010 04:54:20 +0200 Date: Tue, 1 Jun 2010 04:56:04 +0200 (CEST) From: Username To: USer2 Subject: Sample mail Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_13986_26026450.1275360964578" ------=_Part_13986_26026450.1275360964578 Content-Type: multipart/related; boundary="----=_Part_13987_10977679.1275360964578" ------=_Part_13987_10977679.1275360964578 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: 7bit mail ------=_Part_13987_10977679.1275360964578 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-ID: default.large.gif R0lGODlhNgAkAPcAAAAA ------=_Part_13987_10977679.1275360964578-- ------=_Part_13986_26026450.1275360964578-- auto_create.t100644000766000024 125712237151203 15540 0ustar00rjbsstaff000000000000Email-MIME-1.925/tuse strict; use warnings; use Test::More qw[no_plan]; use_ok 'Email::MIME::Creator'; my $email = Email::MIME->create( header => [ From => 'me', To => 'you', Subject => 'test', ], parts => [ q[Part one], q[Part two], generate_binary_data(), ], ); isa_ok $email, 'Email::MIME'; is scalar($email->parts), 3, 'two parts'; my @parts = $email->parts; isa_ok $_, 'Email::MIME' for @parts; like $parts[0]->body, qr/Part one/; like $parts[1]->body, qr/Part two/; like $parts[2]->content_type, qr/binary/, 'third part is binary'; sub generate_binary_data { my $string = join '', map { chr } 1 .. 255; return $string; } disposition.t100644000766000024 135412237151203 15607 0ustar00rjbsstaff000000000000Email-MIME-1.925/tuse strict; use warnings; use Test::More tests => 7; use_ok 'Email::MIME'; use_ok 'Email::MIME::Modifier'; my $email = Email::MIME->new(<<__MESSAGE__); Content-Disposition: inline Engine Engine number nine. __MESSAGE__ isa_ok $email, 'Email::MIME'; $email->disposition_set('attachment'); is $email->header('Content-Disposition'), 'attachment', 'reset worked'; $email->filename_set( 'loco.pdf' ); is $email->header('Content-Disposition'), 'attachment; filename="loco.pdf"', 'filename_set worked'; $email->disposition_set('inline'); is $email->header('Content-Disposition'), 'inline; filename="loco.pdf"', 're-reset worked'; $email->filename_set(undef); is $email->header('Content-Disposition'), 'inline', 'filename_set(undef) worked'; read-nested.t100644000766000024 73012237151203 15413 0ustar00rjbsstaff000000000000Email-MIME-1.925/tuse strict; use warnings; use Test::More tests => 4; use Email::MIME; open IN, 't/Mail/nested-parts' or die "Can't read mail"; my $incoming = do { local $/; ; }; my $msg = Email::MIME->new($incoming); isa_ok($msg => 'Email::MIME'); is(scalar($msg->parts), 1,'outer part'); my @outer_parts = $msg->parts; is(scalar($outer_parts[0]->parts), 1,'middle part'); my @middle_parts = $outer_parts[0]->parts; cmp_ok(scalar($middle_parts[0]->parts), '>', 1,'inner part'); att-1.gif100644000766000024 157212237151203 15357 0ustar00rjbsstaff000000000000Email-MIME-1.925/t/MailGIF89a )))111999JJJ, _#D@AX48##+#e/cI3&(0D- X @ F;nested-parts.t100644000766000024 263712237151203 15661 0ustar00rjbsstaff000000000000Email-MIME-1.925/tuse strict; use warnings; use Email::MIME::Creator; use Test::More tests => 5; my @inner = ( Email::MIME->create( attributes => { content_type => "text/plain", disposition => "attachment", charset => "US-ASCII", }, body => "HELLO THERE!", ), Email::MIME->create( attributes => { content_type => "text/plain", disposition => "attachment", charset => "US-ASCII", }, body => "GOODBYE THERE!", ), ); my @outer = Email::MIME->create( attributes => { content_type => "multipart/alternative", disposition => "attachment", charset => "US-ASCII", }, parts => [ @inner ], ); my $parts = Email::MIME->create( attributes => { content_type => 'multipart/alternative', disposition => 'attachment', }, parts => [ @outer ], ); ; my $email = Email::MIME->create( attributes => { content_type => 'multipart/related' }, header => [ From => 'example@example.example.com' ], parts => [ $parts ], ); like( $email->as_string, qr/HELLO THERE/, "deeply nested content still found in stringified message", ); like( $email->as_string, qr/GOODBYE THERE/, "deeply nested content still found in stringified message", ); is(scalar($email->parts),1,'main contains 1 part'); is(scalar(($email->parts)[0]->parts),1,'outer contains 1 part'); is(scalar((($email->parts)[0]->parts)[0]->parts),2,'inner contains 2 parts'); Email000755000766000024 012237151203 14245 5ustar00rjbsstaff000000000000Email-MIME-1.925/libMIME.pm100644000766000024 6140012237151203 15513 0ustar00rjbsstaff000000000000Email-MIME-1.925/lib/Emailuse 5.008001; use strict; use warnings; package Email::MIME; { $Email::MIME::VERSION = '1.925'; } use Email::Simple 2.102; # crlf handling use parent qw(Email::Simple); # ABSTRACT: easy MIME message handling use Carp (); use Email::MessageID; use Email::MIME::Creator; use Email::MIME::ContentType 1.016; # type/subtype, not discrete/composite use Email::MIME::Encode; use Email::MIME::Encodings 1.314; use Email::MIME::Header; use Email::MIME::Modifier; use Encode 1.9801 (); use Scalar::Util qw(reftype); our $CREATOR = 'Email::MIME::Creator'; my $NO_ENCODE_RE = qr/ \A (?:7bit|8bit|binary)\s*(?:;|$) /ix; sub new { my $self = shift->SUPER::new(@_); $self->{ct} = parse_content_type($self->content_type); $self->parts; return $self; } sub create { my ($class, %args) = @_; my $header = ''; my %headers; if (exists $args{header}) { my @headers = @{ $args{header} }; pop @headers if @headers % 2 == 1; while (my ($key, $value) = splice @headers, 0, 2) { $headers{$key} = 1; $CREATOR->_add_to_header(\$header, $key, $value); } } if (exists $args{header_str}) { my @headers = @{ $args{header_str} }; pop @headers if @headers % 2 == 1; while (my ($key, $value) = splice @headers, 0, 2) { $headers{$key} = 1; $value = Email::MIME::Encode::maybe_mime_encode_header( $key, $value, 'UTF-8' ); $CREATOR->_add_to_header(\$header, $key, $value); } } $CREATOR->_add_to_header(\$header, Date => $CREATOR->_date_header) unless exists $headers{Date}; $CREATOR->_add_to_header(\$header, 'MIME-Version' => '1.0',); my %attrs = $args{attributes} ? %{ $args{attributes} } : (); # XXX: This is awful... but if we don't do this, then Email::MIME->new will # end up calling parse_content_type($self->content_type) which will mean # parse_content_type(undef) which, for some reason, returns the default. # It's really sort of mind-boggling. Anyway, the default ends up being # q{text/plain; charset="us-ascii"} so that if content_type is in the # attributes, but not charset, then charset isn't changedand you up with # something that's q{image/jpeg; charset="us-ascii"} and you look like a # moron. -- rjbs, 2009-01-20 if ( grep { exists $attrs{$_} } qw(content_type charset name format boundary) ) { $CREATOR->_add_to_header(\$header, 'Content-Type' => 'text/plain',); } my $email = $class->new($header); foreach (qw( content_type charset name format boundary encoding disposition filename )) { my $set = "$_\_set"; $email->$set($attrs{$_}) if exists $attrs{$_}; } my $body_args = grep { defined $args{$_} } qw(parts body body_str); Carp::confess("only one of parts, body, or body_str may be given") if $body_args > 1; if ($args{parts} && @{ $args{parts} }) { foreach my $part (@{ $args{parts} }) { $part = $CREATOR->_construct_part($part) unless ref($part); } $email->parts_set($args{parts}); } elsif (defined $args{body}) { $email->body_set($args{body}); } elsif (defined $args{body_str}) { Carp::confess("body_str was given, but no charset is defined") unless my $charset = $attrs{charset}; Carp::confess("body_str was given, but no encoding is defined") unless $attrs{encoding}; my $body_octets = Encode::encode($attrs{charset}, $args{body_str}, 1); $email->body_set($body_octets); } $email; } sub as_string { my $self = shift; return $self->__head->as_string . ($self->{mycrlf} || "\n") # XXX: replace with ->crlf . $self->body_raw; } sub parts { my $self = shift; $self->fill_parts unless $self->{parts}; my @parts = @{ $self->{parts} }; @parts = $self unless @parts; return @parts; } sub subparts { my ($self) = @_; $self->fill_parts unless $self->{parts}; my @parts = @{ $self->{parts} }; return @parts; } sub fill_parts { my $self = shift; if ( $self->{ct}{type} eq "multipart" or $self->{ct}{type} eq "message" ) { $self->parts_multipart; } else { $self->parts_single_part; } return $self; } sub body { my $self = shift; my $body = $self->SUPER::body; my $cte = $self->header("Content-Transfer-Encoding") || ''; $cte =~ s/\A\s+//; $cte =~ s/\s+\z//; $cte =~ s/;.+//; # For S/MIME, etc. return $body unless $cte; if (!$self->force_decode_hook and $cte =~ $NO_ENCODE_RE) { return $body; } $body = $self->decode_hook($body) if $self->can("decode_hook"); $body = Email::MIME::Encodings::decode($cte, $body, '7bit'); return $body; } sub parts_single_part { my $self = shift; $self->{parts} = []; return $self; } sub body_raw { return $_[0]->{body_raw} || $_[0]->SUPER::body; } sub body_str { my ($self) = @_; my $encoding = $self->{ct}{attributes}{charset}; unless ($encoding) { if ($self->{ct}{type} eq 'text' and ($self->{ct}{subtype} eq 'plain' or $self->{ct}{subtype} eq 'html') ) { # assume that plaintext or html without ANY charset is us-ascii return $self->body; } Carp::confess("can't get body as a string for " . $self->content_type); } my $str = Encode::decode($encoding, $self->body, 1); return $str; } sub parts_multipart { my $self = shift; my $boundary = $self->{ct}->{attributes}->{boundary}; # Take a message, join all its lines together. Now try to Email::MIME->new # it with 1.861 or earlier. Death! It tries to recurse endlessly on the # body, because every time it splits on boundary it gets itself. Obviously # that means it's a bogus message, but a mangled result (or exception) is # better than endless recursion. -- rjbs, 2008-01-07 return $self->parts_single_part unless $boundary and $self->body_raw =~ /^--\Q$boundary\E\s*$/sm; $self->{body_raw} = $self->SUPER::body; # rfc1521 7.2.1 my ($body, $epilogue) = split /^--\Q$boundary\E--\s*$/sm, $self->body_raw, 2; my @bits = split /^--\Q$boundary\E\s*$/sm, ($body || ''); $self->SUPER::body_set(undef); # If there are no headers in the potential MIME part, it's just part of the # body. This is a horrible hack, although it's debateable whether it was # better or worse when it was $self->{body} = shift @bits ... -- rjbs, # 2006-11-27 $self->SUPER::body_set(shift @bits) if ($bits[0] || '') !~ /.*:.*/; my $bits = @bits; my @parts; for my $bit (@bits) { $bit =~ s/\A[\n\r]+//smg; $bit =~ s/$self->{mycrlf}\Z//smg; my $email = (ref $self)->new($bit); push @parts, $email; } $self->{parts} = \@parts; return @{ $self->{parts} }; } sub force_decode_hook { 0 } sub decode_hook { return $_[1] } sub content_type { scalar shift->header("Content-type"); } sub debug_structure { my ($self, $level) = @_; $level ||= 0; my $rv = " " x (5 * $level); $rv .= "+ " . ($self->content_type || '') . "\n"; my @parts = $self->parts; if (@parts > 1) { $rv .= $_->debug_structure($level + 1) for @parts; } return $rv; } my %gcache; sub filename { my ($self, $force) = @_; return $gcache{$self} if exists $gcache{$self}; my $dis = $self->header("Content-Disposition") || ''; my $attrs = $dis =~ s/^.*?;// ? Email::MIME::ContentType::_parse_attributes($dis) : {}; my $name = $attrs->{filename} || $self->{ct}{attributes}{name}; return $name if $name or !$force; return $gcache{$self} = $self->invent_filename( $self->{ct}->{type} . "/" . $self->{ct}->{subtype}); } my $gname = 0; sub invent_filename { my ($self, $ct) = @_; require MIME::Types; my $type = MIME::Types->new->type($ct); my $ext = $type && (($type->extensions)[0]); $ext ||= "dat"; return "attachment-$$-" . $gname++ . ".$ext"; } sub default_header_class { 'Email::MIME::Header' } sub header_str_set { my $self = shift; $self->header_obj->header_str_set(@_); } sub content_type_set { my ($self, $ct) = @_; my $ct_header = parse_content_type($self->header('Content-Type')); @{$ct_header}{qw[type subtype]} = split m[/], $ct; $self->_compose_content_type($ct_header); $self->_reset_cids; return $ct; } BEGIN { foreach my $attr (qw[charset name format]) { my $code = sub { my ($self, $value) = @_; my $ct_header = parse_content_type($self->header('Content-Type')); if ($value) { $ct_header->{attributes}->{$attr} = $value; } else { delete $ct_header->{attributes}->{$attr}; } $self->_compose_content_type($ct_header); return $value; }; no strict 'refs'; ## no critic strict *{"$attr\_set"} = $code; } } sub boundary_set { my ($self, $value) = @_; my $ct_header = parse_content_type($self->header('Content-Type')); if ($value) { $ct_header->{attributes}->{boundary} = $value; } else { delete $ct_header->{attributes}->{boundary}; } $self->_compose_content_type($ct_header); $self->parts_set([ $self->parts ]) if $self->parts > 1; } sub encoding_set { my ($self, $enc) = @_; $enc ||= '7bit'; my $body = $self->body; $self->header_set('Content-Transfer-Encoding' => $enc); $self->body_set($body); } sub body_set { my ($self, $body) = @_; my $body_ref; if (ref $body) { Carp::croak("provided body reference is not a scalar reference") unless reftype($body) eq 'SCALAR'; $body_ref = $body; $body = $$body_ref; } else { $body_ref = \$body; } my $enc = $self->header('Content-Transfer-Encoding'); # XXX: This is a disgusting hack and needs to be fixed, probably by a # clearer definition and reengineering of Simple construction. The bug # this fixes is an indirect result of the previous behavior in which all # Simple subclasses were free to alter the guts of the Email::Simple # object. -- rjbs, 2007-07-16 unless (((caller(1))[3] || '') eq 'Email::Simple::new') { $body = Email::MIME::Encodings::encode($enc, $body) unless !$enc || $enc =~ $NO_ENCODE_RE; } $self->{body_raw} = $body; $self->SUPER::body_set($body_ref); } sub body_str_set { my ($self, $body_str) = @_; my $ct = parse_content_type($self->content_type); Carp::confess("body_str was given, but no charset is defined") unless my $charset = $ct->{attributes}{charset}; my $body_octets = Encode::encode($charset, $body_str, 1); $self->body_set($body_octets); } sub disposition_set { my ($self, $dis) = @_; $dis ||= 'inline'; my $dis_header = $self->header('Content-Disposition'); $dis_header ? ($dis_header =~ s/^([^;]+)/$dis/) : ($dis_header = $dis); $self->header_set('Content-Disposition' => $dis_header); } sub filename_set { my ($self, $filename) = @_; my $dis_header = $self->header('Content-Disposition'); my ($disposition, $attrs); if ($dis_header) { ($disposition) = ($dis_header =~ /^([^;]+)/); $dis_header =~ s/^$disposition(?:;\s*)?//; $attrs = Email::MIME::ContentType::_parse_attributes($dis_header) || {}; } $filename ? $attrs->{filename} = $filename : delete $attrs->{filename}; $disposition ||= 'inline'; my $dis = $disposition; while (my ($attr, $val) = each %{$attrs}) { $dis .= qq[; $attr="$val"]; } $self->header_set('Content-Disposition' => $dis); } sub parts_set { my ($self, $parts) = @_; my $body = q{}; my $ct_header = parse_content_type($self->header('Content-Type')); if (@{$parts} > 1 or $ct_header->{type} eq 'multipart') { # setup multipart $ct_header->{attributes}->{boundary} ||= Email::MessageID->new->user; my $bound = $ct_header->{attributes}->{boundary}; foreach my $part (@{$parts}) { $body .= "$self->{mycrlf}--$bound$self->{mycrlf}"; $body .= $part->as_string; } $body .= "$self->{mycrlf}--$bound--$self->{mycrlf}"; @{$ct_header}{qw[type subtype]} = qw[multipart mixed] unless grep { $ct_header->{type} eq $_ } qw[multipart message]; } elsif (@$parts == 1) { # setup singlepart $body .= $parts->[0]->body; @{$ct_header}{qw[type subtype]} = @{ parse_content_type($parts->[0]->header('Content-Type')) } {qw[type subtype]}; $self->encoding_set($parts->[0]->header('Content-Transfer-Encoding')); delete $ct_header->{attributes}->{boundary}; } $self->_compose_content_type($ct_header); $self->body_set($body); $self->fill_parts; $self->_reset_cids; } sub parts_add { my ($self, $parts) = @_; $self->parts_set([ $self->parts, @{$parts}, ]); } sub walk_parts { my ($self, $callback) = @_; my %changed; my $walk; $walk = sub { my ($part) = @_; $callback->($part); if (my @orig_subparts = $part->subparts) { my @subparts = map {; $walk->($_) } @orig_subparts; my $differ = (@subparts != @orig_subparts) || (grep { $subparts[$_] != $orig_subparts[$_] } (0 .. $#subparts)) || (grep { $changed{ 0+$subparts[$_] } } (0 .. $#subparts)); if ($differ) { $part->parts_set(\@subparts); $changed{ 0+$part }++; } } return $part; }; my $rv = $walk->($self); undef $walk; return $rv; } sub _compose_content_type { my ($self, $ct_header) = @_; my $ct = join q{/}, @{$ct_header}{qw[type subtype]}; for my $attr (sort keys %{ $ct_header->{attributes} }) { $ct .= qq[; $attr="$ct_header->{attributes}{$attr}"]; } $self->header_set('Content-Type' => $ct); $self->{ct} = $ct_header; } sub _get_cid { Email::MessageID->new->address; } sub _reset_cids { my ($self) = @_; my $ct_header = parse_content_type($self->header('Content-Type')); if ($self->parts > 1) { if ($ct_header->{subtype} eq 'alternative') { my %cids; for my $part ($self->parts) { my $cid = defined $part->header('Content-ID') ? $part->header('Content-ID') : q{}; $cids{$cid}++; } return if keys(%cids) == 1; my $cid = $self->_get_cid; $_->header_set('Content-ID' => "<$cid>") for $self->parts; } else { foreach ($self->parts) { my $cid = $self->_get_cid; $_->header_set('Content-ID' => "<$cid>") unless $_->header('Content-ID'); } } } } 1; __END__ =pod =head1 NAME Email::MIME - easy MIME message handling =head1 VERSION version 1.925 =head1 SYNOPSIS B Before you read this, maybe you just need L, which is a much easier-to-use tool for building simple email messages that might have attachments or both plain text and HTML. If that doesn't do it for you, then by all means keep reading. use Email::MIME; my $parsed = Email::MIME->new($message); my @parts = $parsed->parts; # These will be Email::MIME objects, too. my $decoded = $parsed->body; my $non_decoded = $parsed->body_raw; my $content_type = $parsed->content_type; ...or... use Email::MIME::Creator; use IO::All; # multipart message my @parts = ( Email::MIME->create( attributes => { filename => "report.pdf", content_type => "application/pdf", encoding => "quoted-printable", name => "2004-financials.pdf", }, body => io( "2004-financials.pdf" )->all, ), Email::MIME->create( attributes => { content_type => "text/plain", disposition => "attachment", charset => "US-ASCII", }, body_str => "Hello there!", ), ); my $email = Email::MIME->create( header_str => [ From => 'casey@geeknest.com' ], parts => [ @parts ], ); # nesting parts $email->parts_set( [ $email->parts, Email::MIME->create( parts => [ @parts ] ), ], ); # standard modifications $email->header_str_set( 'X-PoweredBy' => 'RT v3.0' ); $email->header_str_set( To => rcpts() ); $email->header_str_set( Cc => aux_rcpts() ); $email->header_str_set( Bcc => sekrit_rcpts() ); # more advanced $_->encoding_set( 'base64' ) for $email->parts; # Quick multipart creation my $quicky = Email::MIME->create( header_str => [ From => 'my@address', To => 'your@address', ], parts => [ q[This is part one], q[This is part two], q[These could be binary too], ], ); print $email->as_string; =head1 DESCRIPTION This is an extension of the L module, to handle MIME encoded messages. It takes a message as a string, splits it up into its constituent parts, and allows you access to various parts of the message. Headers are decoded from MIME encoding. =head1 METHODS =head2 create my $single = Email::MIME->create( header_str => [ ... ], body_str => '...', attributes => { ... }, ); my $multi = Email::MIME->create( header_str => [ ... ], parts => [ ... ], attributes => { ... }, ); This method creates a new MIME part. The C parameter is a list of headers pairs to include in the message. The value for each pair is expected to be a text string that will be MIME-encoded as needed. A similar C
parameter can be provided in addition to or instead of C. Its values will be used verbatim. C is a hash of MIME attributes to assign to the part, and may override portions of the header set in the C
parameter. The C parameter is a list reference containing C objects. Elements of the C list can also be a non-reference string of data. In that case, an C object will be created for you. Simple checks will determine if the part is binary or not, and all parts created in this fashion are encoded with C, just in case. If C is given instead of C, it specifies the body to be used for a flat (subpart-less) MIME message. It is assumed to be a sequence of octets. If C is given instead of C or C, it is assumed to be a character string to be used as the body. If you provide a C parameter, you B provide C and C attributes. Back to C. The hash keys correspond directly to methods or modifying a message from C. The allowed keys are: content_type, charset, name, format, boundary, encoding, disposition, and filename. They will be mapped to C<"$attr\_set"> for message modification. =head2 content_type_set $email->content_type_set( 'text/html' ); Change the content type. All C header attributes will remain intact. =head2 charset_set =head2 name_set =head2 format_set =head2 boundary_set $email->charset_set( 'UTF-8' ); $email->name_set( 'some_filename.txt' ); $email->format_set( 'flowed' ); $email->boundary_set( undef ); # remove the boundary These four methods modify common C attributes. If set to C, the attribute is removed. All other C header information is preserved when modifying an attribute. =head2 encoding_set $email->encoding_set( 'base64' ); $email->encoding_set( 'quoted-printable' ); $email->encoding_set( '8bit' ); Convert the message body and alter the C header using this method. Your message body, the output of the C method, will remain the same. The raw body, output with the C method, will be changed to reflect the new encoding. =head2 body_set $email->body_set( $unencoded_body_string ); This method will encode the new body you send using the encoding specified in the C header, then set the body to the new encoded body. This method overrides the default C method. =head2 body_str_set $email->body_str_set($unicode_str); This method behaves like C, but assumes that the given value is a Unicode string that should be encoded into the message's charset before being set. The charset must already be set, either manually (via the C argument to C or C) or through the C of a parsed message. If the charset can't be determined, an exception is thrown. =head2 disposition_set $email->disposition_set( 'attachment' ); Alter the C of a message. All header attributes will remain intact. =head2 filename_set $email->filename_set( 'boo.pdf' ); Sets the filename attribute in the C header. All other header information is preserved when setting this attribute. =head2 parts_set $email->parts_set( \@new_parts ); Replaces the parts for an object. Accepts a reference to a list of C objects, representing the new parts. If this message was originally a single part, the C header will be changed to C, and given a new boundary attribute. =head2 parts_add $email->parts_add( \@more_parts ); Adds MIME parts onto the current MIME part. This is a simple extension of C to make our lives easier. It accepts an array reference of additional parts. =head2 walk_parts $email->walk_parts(sub { my ($part) = @_; return if $part->subparts; # multipart if ( $part->content_type =~ m[text/html]i ) { my $body = $part->body; $body =~ s/]+>//; # simple filter example $part->body_set( $body ); } }); Walks through all the MIME parts in a message and applies a callback to each. Accepts a code reference as its only argument. The code reference will be passed a single argument, the current MIME part within the top-level MIME object. All changes will be applied in place. =head2 header_str_set $email->header_str_set($header_name => @value_strings); This behaves like C, but expects Unicode (character) strings as the values to set, rather than pre-encoded byte strings. It will encode them as MIME encoded-words if they contain any control or 8-bit characters. =head2 parts This returns a list of C objects reflecting the parts of the message. If it's a single-part message, you get the original object back. In scalar context, this method returns the number of parts. This is a stupid method. Don't use it. =head2 subparts This returns a list of C objects reflecting the parts of the message. If it's a single-part message, this method returns an empty list. In scalar context, this method returns the number of subparts. =head2 body This decodes and returns the body of the object I. For top-level objects in multi-part messages, this is highly likely to be something like "This is a multi-part message in MIME format." =head2 body_str This decodes both the Content-Transfer-Encoding layer of the body (like the C method) as well as the charset encoding of the body (unlike the C method), returning a Unicode string. If the charset is known, it is used. If there is no charset but the content type is either C or C, us-ascii is assumed. Otherwise, an exception is thrown. =head2 body_raw This returns the body of the object, but doesn't decode the transfer encoding. =head2 decode_hook This method is called before the L C method, to decode the body of non-binary messages (or binary messages, if the C method returns true). By default, this method does nothing, but subclasses may define behavior. This method could be used to implement the decryption of content in secure email, for example. =head2 content_type This is a shortcut for access to the content type header. =head2 filename This provides the suggested filename for the attachment part. Normally it will return the filename from the headers, but if C is passed a true parameter, it will generate an appropriate "stable" filename if one is not found in the MIME headers. =head2 invent_filename my $filename = Email::MIME->invent_filename($content_type); This routine is used by C to generate filenames for attached files. It will attempt to choose a reasonable extension, falling back to F. =head2 debug_structure my $description = $email->debug_structure; This method returns a string that describes the structure of the MIME entity. For example: + multipart/alternative; boundary="=_NextPart_2"; charset="BIG-5" + text/plain + text/html =head1 METHODS Please see L for the base set of methods. It won't take very long. Added to that, you have: =head1 TODO All of the Email::MIME-specific guts should move to a single entry on the object's guts. This will require changes to both Email::MIME and L, sadly. =head1 SEE ALSO L, L, L. =head1 THANKS This module was generously sponsored by Best Practical (http://www.bestpractical.com/), Pete Sergeant, and Pobox.com. =head1 AUTHORS =over 4 =item * Ricardo SIGNES =item * Casey West =item * Simon Cozens =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2004 by Simon Cozens and Casey West. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut nested-parts100644000766000024 205312237151203 16271 0ustar00rjbsstaff000000000000Email-MIME-1.925/t/MailFrom: example@example.com To: example2@example.com Subject: Test attachment Date: Fri, 4 Aug 2006 18:52:34 -0400 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="1154731954.d55bF4462.2751"; charset="us-ascii" --1154731954.d55bF4462.2751 Date: Fri, 4 Aug 2006 18:52:34 -0400 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="1154731954.AEE1f1.2751"; charset="us-ascii" Content-Disposition: attachment --1154731954.AEE1f1.2751 Date: Fri, 4 Aug 2006 18:52:34 -0400 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="1154731954.6De5C320.2751"; charset="US-ASCII" Content-Disposition: attachment --1154731954.6De5C320.2751 Date: Fri, 4 Aug 2006 18:52:34 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Disposition: attachment HELLO THERE! --1154731954.6De5C320.2751 Date: Fri, 4 Aug 2006 18:52:34 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Disposition: attachment HELLO THERE! --1154731954.6De5C320.2751-- --1154731954.AEE1f1.2751-- --1154731954.d55bF4462.2751-- files000755000766000024 012237151203 14015 5ustar00rjbsstaff000000000000Email-MIME-1.925/treadme.txt.gz100644000766000024 311612237151203 16573 0ustar00rjbsstaff000000000000Email-MIME-1.925/t/filesQĭDreadme.txtWmo6_Axbc~نb(k Eѵ-Q6H*}w$EѲ5ZK;=܋^\NJŋWr^pɈ\/?2|R~^[=Cr mzCrJg'AGR={j-%Vbpܽ٬yav_=0V XrՖ ǿ6kohu:8͙^*ikn*eJW2Ԇ39X; ʋto}Qr< vA0'1_v~s7~^hsf%.9U WZٵ MJ*yU j\GL߭0̫Y&q욑^B+!+3vW+MAØS˞dmKqp5+ JBkpz@5_p!)K:l([S D? =[ZTo՚xj[4.6Kn;VADBBn/?a!~W!M)͂=j`5@8&}R[>-UmS4CA56hs1O]]^+1V݋=ѝd%F;LqV KJw3Vj [8$l~Wn@|It充ݴjE~G3 &koЌފXZmlh{ZU{d‹J66#h52`b6#/ӯ0~$7 CV3$n%oK1Պ /ưNA7wKUm6YbeL\[? AՏmf?nmto&'ǝ_y?:`\ <`/pdrelease000755000766000024 012237151203 14523 5ustar00rjbsstaff000000000000Email-MIME-1.925/xtpod-syntax.t100644000766000024 21212237151203 17131 0ustar00rjbsstaff000000000000Email-MIME-1.925/xt/release#!perl use Test::More; eval "use Test::Pod 1.41"; plan skip_all => "Test::Pod 1.41 required for testing POD" if $@; all_pod_files_ok(); MIME000755000766000024 012237151203 14774 5ustar00rjbsstaff000000000000Email-MIME-1.925/lib/EmailEncode.pm100644000766000024 707112237151203 16674 0ustar00rjbsstaff000000000000Email-MIME-1.925/lib/Email/MIMEuse strict; use warnings; package Email::MIME::Encode; { $Email::MIME::Encode::VERSION = '1.925'; } # ABSTRACT: a private helper for MIME header encoding use Email::Address; use Encode (); use MIME::Base64(); my %encoders = ( 'Date' => \&_date_time_encode, 'From' => \&_mailbox_list_encode, 'Sender' => \&_mailbox_encode, 'Reply-To' => \&_address_list_encode, 'To' => \&_address_list_encode, 'Cc' => \&_address_list_encode, 'Bcc' => \&_address_list_encode, 'Message-ID' => \&_msg_id_encode, 'In-Reply-To' => \&_msg_id_encode, 'References' => \&_msg_id_encode, 'Subject' => \&_unstructured_encode, 'Comments' => \&_unstructured_encode, ); sub maybe_mime_encode_header { my ($header, $val, $charset) = @_; return $val unless $val =~ /\P{ASCII}/ || $val =~ /=\?/; $header =~ s/^Resent-//; return $encoders{$header}->($val, $charset) if exists $encoders{$header}; return _unstructured_encode($val, $charset); } sub _date_time_encode { my ($val, $charset) = @_; return $val; } sub _mailbox_encode { my ($val, $charset) = @_; return _mailbox_list_encode($val, $charset); } sub _mailbox_list_encode { my ($val, $charset) = @_; my @addrs = Email::Address->parse($val); @addrs = map { my $phrase = $_->phrase; $_->phrase(mime_encode($phrase, $charset)) if $phrase =~ /\P{ASCII}/; my $comment = $_->comment; $_->comment(mime_encode($comment, $charset)) if $comment =~ /\P{ASCII}/; $_; } @addrs; return join(', ', map { $_->format } @addrs); } sub _address_encode { my ($val, $charset) = @_; return _address_list_encode($val, $charset); } sub _address_list_encode { my ($val, $charset) = @_; return _mailbox_list_encode($val, $charset); # XXX is this right? } sub _msg_id_encode { my ($val, $charset) = @_; return $val; } sub _unstructured_encode { my ($val, $charset) = @_; return mime_encode($val, $charset); } # XXX this is copied directly out of Courriel::Header # eventually, this should be extracted out into something that could be shared sub mime_encode { my $text = shift; my $charset = Encode::find_encoding(shift)->mime_name(); my $head = '=?' . $charset . '?B?'; my $tail = '?='; my $base_length = 75 - ( length($head) + length($tail) ); # This code is copied from Mail::Message::Field::Full in the Mail-Box # distro. my $real_length = int( $base_length / 4 ) * 3; my @result; my $chunk = q{}; while ( length( my $chr = substr( $text, 0, 1, '' ) ) ) { my $chr = Encode::encode( $charset, $chr, 0 ); if ( length($chunk) + length($chr) > $real_length ) { push @result, $head . MIME::Base64::encode_base64( $chunk, q{} ) . $tail; $chunk = q{}; } $chunk .= $chr; } push @result, $head . MIME::Base64::encode_base64( $chunk, q{} ) . $tail if length $chunk; return join q{ }, @result; } 1; __END__ =pod =head1 NAME Email::MIME::Encode - a private helper for MIME header encoding =head1 VERSION version 1.925 =head1 AUTHORS =over 4 =item * Ricardo SIGNES =item * Casey West =item * Simon Cozens =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2004 by Simon Cozens and Casey West. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Header.pm100644000766000024 432612237151203 16667 0ustar00rjbsstaff000000000000Email-MIME-1.925/lib/Email/MIMEuse strict; use warnings; package Email::MIME::Header; { $Email::MIME::Header::VERSION = '1.925'; } use parent 'Email::Simple::Header'; # ABSTRACT: the header of a MIME message use Email::MIME::Encode; use Encode 1.9801; sub header { my $self = shift; my @header = $self->SUPER::header(@_); local $@; foreach my $header (@header) { next unless $header =~ /=\?/; $header = $self->_header_decode_str($header); } return wantarray ? (@header) : $header[0]; } sub header_raw { Carp::croak "header_raw may not be used to set headers" if @_ > 2; my ($self, $header) = @_; return $self->SUPER::header($header); } sub header_str_set { my ($self, $name, @vals) = @_; my @values = map { Email::MIME::Encode::maybe_mime_encode_header($name, $_, 'UTF-8') } @vals; $self->header_set($name => @values); } sub _header_decode_str { my ($self, $str) = @_; my $new_str; $new_str = $str unless eval { $new_str = Encode::decode("MIME-Header", $str); 1 }; return $new_str; } 1; __END__ =pod =head1 NAME Email::MIME::Header - the header of a MIME message =head1 VERSION version 1.925 =head1 DESCRIPTION This object behaves like a standard Email::Simple header, with the following changes: =over 4 =item * the C
method automatically decodes encoded headers if possible =item * the C method returns the raw header; (read only for now) =item * stringification uses C rather than C
=back Note that C does not do encoding for you, and expects an encoded header. Thus, C round-trips with C, not C
! Be sure to properly encode your headers with C before passing them to C. Alternately, if you have Unicode (character) strings to set in headers, use the C method. =head1 AUTHORS =over 4 =item * Ricardo SIGNES =item * Casey West =item * Simon Cozens =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2004 by Simon Cozens and Casey West. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Creator.pm100644000766000024 220212237151203 17065 0ustar00rjbsstaff000000000000Email-MIME-1.925/lib/Email/MIMEuse 5.008001; use strict; use warnings; package Email::MIME::Creator; { $Email::MIME::Creator::VERSION = '1.925'; } # ABSTRACT: obsolete do-nothing library use parent q[Email::Simple::Creator]; use Email::MIME; use Encode (); sub _construct_part { my ($class, $body) = @_; my $is_binary = $body =~ /[\x00\x80-\xFF]/; my $content_type = $is_binary ? 'application/x-binary' : 'text/plain'; Email::MIME->create( attributes => { content_type => $content_type, encoding => ($is_binary ? 'base64' : ''), # be safe }, body => $body, ); } 1; __END__ =pod =head1 NAME Email::MIME::Creator - obsolete do-nothing library =head1 VERSION version 1.925 =head1 SYNOPSIS You don't need to use this module for anything. =head1 AUTHORS =over 4 =item * Ricardo SIGNES =item * Casey West =item * Simon Cozens =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2004 by Simon Cozens and Casey West. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Modifier.pm100644000766000024 122112237151203 17224 0ustar00rjbsstaff000000000000Email-MIME-1.925/lib/Email/MIMEuse strict; use warnings; package Email::MIME::Modifier; { $Email::MIME::Modifier::VERSION = '1.925'; } # ABSTRACT: obsolete do-nothing library 1; __END__ =pod =head1 NAME Email::MIME::Modifier - obsolete do-nothing library =head1 VERSION version 1.925 =head1 AUTHORS =over 4 =item * Ricardo SIGNES =item * Casey West =item * Simon Cozens =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2004 by Simon Cozens and Casey West. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut 000-report-versions-tiny.t100644000766000024 541412237151203 17703 0ustar00rjbsstaff000000000000Email-MIME-1.925/tuse strict; use warnings; use Test::More 0.88; # This is a relatively nice way to avoid Test::NoWarnings breaking our # expectations by adding extra tests, without using no_plan. It also helps # avoid any other test module that feels introducing random tests, or even # test plans, is a nice idea. our $success = 0; END { $success && done_testing; } # List our own version used to generate this my $v = "\nGenerated by Dist::Zilla::Plugin::ReportVersions::Tiny v1.10\n"; eval { # no excuses! # report our Perl details my $want = '5.008001'; $v .= "perl: $] (wanted $want) on $^O from $^X\n\n"; }; defined($@) and diag("$@"); # Now, our module version dependencies: sub pmver { my ($module, $wanted) = @_; $wanted = " (want $wanted)"; my $pmver; eval "require $module;"; if ($@) { if ($@ =~ m/Can't locate .* in \@INC/) { $pmver = 'module not found.'; } else { diag("${module}: $@"); $pmver = 'died during require.'; } } else { my $version; eval { $version = $module->VERSION; }; if ($@) { diag("${module}: $@"); $pmver = 'died during VERSION check.'; } elsif (defined $version) { $pmver = "$version"; } else { $pmver = ''; } } # So, we should be good, right? return sprintf('%-45s => %-10s%-15s%s', $module, $pmver, $wanted, "\n"); } eval { $v .= pmver('Carp','any version') }; eval { $v .= pmver('Email::Address','any version') }; eval { $v .= pmver('Email::MIME::ContentType','1.016') }; eval { $v .= pmver('Email::MIME::Encodings','1.314') }; eval { $v .= pmver('Email::MessageID','any version') }; eval { $v .= pmver('Email::Simple','2.102') }; eval { $v .= pmver('Email::Simple::Creator','any version') }; eval { $v .= pmver('Email::Simple::Header','any version') }; eval { $v .= pmver('Encode','1.9801') }; eval { $v .= pmver('ExtUtils::MakeMaker','6.30') }; eval { $v .= pmver('MIME::Base64','any version') }; eval { $v .= pmver('MIME::Types','1.13') }; eval { $v .= pmver('Scalar::Util','any version') }; eval { $v .= pmver('Symbol','any version') }; eval { $v .= pmver('Test::More','0.96') }; eval { $v .= pmver('parent','any version') }; eval { $v .= pmver('strict','any version') }; eval { $v .= pmver('utf8','any version') }; eval { $v .= pmver('warnings','any version') }; # All done. $v .= <<'EOT'; Thanks for using my code. I hope it works for you. If not, please try and include this output in the bug report. That will help me reproduce the issue and solve your problem. EOT diag($v); ok(1, "we really didn't test anything, just reporting data"); $success = 1; # Work around another nasty module on CPAN. :/ no warnings 'once'; $Template::Test::NO_FLUSH = 1; exit 0; changes_has_content.t100644000766000024 201112237151203 21037 0ustar00rjbsstaff000000000000Email-MIME-1.925/xt/release#!perl use Test::More tests => 2; note 'Checking Changes'; my $changes_file = 'Changes'; my $newver = '1.925'; my $trial_token = '-TRIAL'; SKIP: { ok(-e $changes_file, "$changes_file file exists") or skip 'Changes is missing', 1; ok(_get_changes($newver), "$changes_file has content for $newver"); } done_testing; # _get_changes copied and adapted from Dist::Zilla::Plugin::Git::Commit # by Jerome Quelin sub _get_changes { my $newver = shift; # parse changelog to find commit message open(my $fh, '<', $changes_file) or die "cannot open $changes_file: $!"; my $changelog = join('', <$fh>); close $fh; my @content = grep { /^$newver(?:$trial_token)?(?:\s+|$)/ ... /^\S/ } # from newver to un-indented split /\n/, $changelog; shift @content; # drop the version line # drop unindented last line and trailing blank lines pop @content while ( @content && $content[-1] =~ /^(?:\S|\s*$)/ ); # return number of non-blank lines return scalar @content; }