create-berna-stencil 1.0.8 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/.eleventy.js +3 -1
  2. package/.env.example +8 -0
  3. package/.gitignore +2 -1
  4. package/README.md +1 -5
  5. package/bin/create.js +2 -1
  6. package/package.json +71 -70
  7. package/src/.htaccess +18 -0
  8. package/src/api/.htaccess +12 -0
  9. package/src/api/composer.json +6 -0
  10. package/src/api/composer.lock +574 -0
  11. package/src/api/endpoints/protected/secret.php +16 -0
  12. package/src/api/endpoints/protected/send-mail.php +75 -0
  13. package/src/api/endpoints/public/ping.php +16 -0
  14. package/src/api/index.php +95 -0
  15. package/src/api/init.php +43 -0
  16. package/src/api/modules/Response.php +37 -0
  17. package/src/api/vendor/autoload.php +22 -0
  18. package/src/api/vendor/composer/ClassLoader.php +579 -0
  19. package/src/api/vendor/composer/InstalledVersions.php +396 -0
  20. package/src/api/vendor/composer/LICENSE +21 -0
  21. package/src/api/vendor/composer/autoload_classmap.php +15 -0
  22. package/src/api/vendor/composer/autoload_files.php +12 -0
  23. package/src/api/vendor/composer/autoload_namespaces.php +9 -0
  24. package/src/api/vendor/composer/autoload_psr4.php +16 -0
  25. package/src/api/vendor/composer/autoload_real.php +50 -0
  26. package/src/api/vendor/composer/autoload_static.php +86 -0
  27. package/src/api/vendor/composer/installed.json +582 -0
  28. package/src/api/vendor/composer/installed.php +86 -0
  29. package/src/api/vendor/composer/platform_check.php +25 -0
  30. package/src/api/vendor/graham-campbell/result-type/.gitattributes +9 -0
  31. package/src/api/vendor/graham-campbell/result-type/.github/CODE_OF_CONDUCT.md +132 -0
  32. package/src/api/vendor/graham-campbell/result-type/.github/CONTRIBUTING.md +31 -0
  33. package/src/api/vendor/graham-campbell/result-type/.github/FUNDING.yml +2 -0
  34. package/src/api/vendor/graham-campbell/result-type/.github/SECURITY.md +14 -0
  35. package/src/api/vendor/graham-campbell/result-type/.github/workflows/stale.yml +11 -0
  36. package/src/api/vendor/graham-campbell/result-type/.github/workflows/tests.yml +40 -0
  37. package/src/api/vendor/graham-campbell/result-type/CHANGELOG.md +53 -0
  38. package/src/api/vendor/graham-campbell/result-type/LICENSE +21 -0
  39. package/src/api/vendor/graham-campbell/result-type/README.md +42 -0
  40. package/src/api/vendor/graham-campbell/result-type/composer.json +33 -0
  41. package/src/api/vendor/graham-campbell/result-type/phpunit.xml.dist +13 -0
  42. package/src/api/vendor/graham-campbell/result-type/src/Error.php +121 -0
  43. package/src/api/vendor/graham-campbell/result-type/src/Result.php +69 -0
  44. package/src/api/vendor/graham-campbell/result-type/src/Success.php +120 -0
  45. package/src/api/vendor/graham-campbell/result-type/tests/ResultTest.php +95 -0
  46. package/src/api/vendor/phpmailer/phpmailer/.codecov.yml +21 -0
  47. package/src/api/vendor/phpmailer/phpmailer/.editorconfig +15 -0
  48. package/src/api/vendor/phpmailer/phpmailer/.gitattributes +17 -0
  49. package/src/api/vendor/phpmailer/phpmailer/.github/FUNDING.yml +6 -0
  50. package/src/api/vendor/phpmailer/phpmailer/.github/ISSUE_TEMPLATE/bug_report.md +23 -0
  51. package/src/api/vendor/phpmailer/phpmailer/.github/actions/build-docs/Dockerfile +15 -0
  52. package/src/api/vendor/phpmailer/phpmailer/.github/actions/build-docs/entrypoint.sh +5 -0
  53. package/src/api/vendor/phpmailer/phpmailer/.github/dependabot.yml +21 -0
  54. package/src/api/vendor/phpmailer/phpmailer/.github/workflows/docs.yaml +30 -0
  55. package/src/api/vendor/phpmailer/phpmailer/.github/workflows/scorecards.yml +61 -0
  56. package/src/api/vendor/phpmailer/phpmailer/.github/workflows/tests.yml +237 -0
  57. package/src/api/vendor/phpmailer/phpmailer/.phan/config.php +41 -0
  58. package/src/api/vendor/phpmailer/phpmailer/COMMITMENT +46 -0
  59. package/src/api/vendor/phpmailer/phpmailer/LICENSE +502 -0
  60. package/src/api/vendor/phpmailer/phpmailer/README.md +232 -0
  61. package/src/api/vendor/phpmailer/phpmailer/SECURITY.md +37 -0
  62. package/src/api/vendor/phpmailer/phpmailer/SMTPUTF8.md +48 -0
  63. package/src/api/vendor/phpmailer/phpmailer/UPGRADING.md +125 -0
  64. package/src/api/vendor/phpmailer/phpmailer/VERSION +1 -0
  65. package/src/api/vendor/phpmailer/phpmailer/changelog.md +1122 -0
  66. package/src/api/vendor/phpmailer/phpmailer/composer.json +84 -0
  67. package/src/api/vendor/phpmailer/phpmailer/docs/README.md +9 -0
  68. package/src/api/vendor/phpmailer/phpmailer/examples/DKIM_gen_keys.phps +81 -0
  69. package/src/api/vendor/phpmailer/phpmailer/examples/DKIM_sign.phps +46 -0
  70. package/src/api/vendor/phpmailer/phpmailer/examples/README.md +96 -0
  71. package/src/api/vendor/phpmailer/phpmailer/examples/azure_xoauth2.phps +126 -0
  72. package/src/api/vendor/phpmailer/phpmailer/examples/callback.phps +76 -0
  73. package/src/api/vendor/phpmailer/phpmailer/examples/contactform-ajax.phps +146 -0
  74. package/src/api/vendor/phpmailer/phpmailer/examples/contactform.phps +95 -0
  75. package/src/api/vendor/phpmailer/phpmailer/examples/contents.html +17 -0
  76. package/src/api/vendor/phpmailer/phpmailer/examples/contentsutf8.html +23 -0
  77. package/src/api/vendor/phpmailer/phpmailer/examples/exceptions.phps +40 -0
  78. package/src/api/vendor/phpmailer/phpmailer/examples/extending.phps +72 -0
  79. package/src/api/vendor/phpmailer/phpmailer/examples/gmail.phps +106 -0
  80. package/src/api/vendor/phpmailer/phpmailer/examples/gmail_xoauth.phps +121 -0
  81. package/src/api/vendor/phpmailer/phpmailer/examples/images/PHPMailer card logo.afdesign +0 -0
  82. package/src/api/vendor/phpmailer/phpmailer/examples/images/PHPMailer card logo.png +0 -0
  83. package/src/api/vendor/phpmailer/phpmailer/examples/images/PHPMailer card logo.svg +209 -0
  84. package/src/api/vendor/phpmailer/phpmailer/examples/images/phpmailer.png +0 -0
  85. package/src/api/vendor/phpmailer/phpmailer/examples/images/phpmailer_mini.png +0 -0
  86. package/src/api/vendor/phpmailer/phpmailer/examples/mail.phps +35 -0
  87. package/src/api/vendor/phpmailer/phpmailer/examples/mailing_list.phps +96 -0
  88. package/src/api/vendor/phpmailer/phpmailer/examples/pop_before_smtp.phps +60 -0
  89. package/src/api/vendor/phpmailer/phpmailer/examples/send_file_upload.phps +60 -0
  90. package/src/api/vendor/phpmailer/phpmailer/examples/send_multiple_file_upload.phps +60 -0
  91. package/src/api/vendor/phpmailer/phpmailer/examples/sendmail.phps +37 -0
  92. package/src/api/vendor/phpmailer/phpmailer/examples/sendoauth2.phps +100 -0
  93. package/src/api/vendor/phpmailer/phpmailer/examples/simple_contact_form.phps +102 -0
  94. package/src/api/vendor/phpmailer/phpmailer/examples/smime_signed_mail.phps +99 -0
  95. package/src/api/vendor/phpmailer/phpmailer/examples/smtp.phps +62 -0
  96. package/src/api/vendor/phpmailer/phpmailer/examples/smtp_check.phps +60 -0
  97. package/src/api/vendor/phpmailer/phpmailer/examples/smtp_low_memory.phps +117 -0
  98. package/src/api/vendor/phpmailer/phpmailer/examples/smtp_no_auth.phps +53 -0
  99. package/src/api/vendor/phpmailer/phpmailer/examples/ssl_options.phps +81 -0
  100. package/src/api/vendor/phpmailer/phpmailer/get_oauth_token.php +182 -0
  101. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php +26 -0
  102. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ar.php +27 -0
  103. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-as.php +35 -0
  104. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php +27 -0
  105. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ba.php +27 -0
  106. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php +27 -0
  107. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php +27 -0
  108. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-bn.php +35 -0
  109. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php +27 -0
  110. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php +28 -0
  111. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php +39 -0
  112. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php +28 -0
  113. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php +33 -0
  114. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-eo.php +37 -0
  115. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php +38 -0
  116. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php +28 -0
  117. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php +28 -0
  118. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php +27 -0
  119. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php +27 -0
  120. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php +36 -0
  121. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-gl.php +27 -0
  122. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php +27 -0
  123. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php +35 -0
  124. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php +27 -0
  125. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php +27 -0
  126. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-hy.php +27 -0
  127. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php +31 -0
  128. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php +28 -0
  129. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php +37 -0
  130. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php +27 -0
  131. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php +27 -0
  132. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ku.php +27 -0
  133. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php +27 -0
  134. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php +27 -0
  135. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php +27 -0
  136. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-mn.php +27 -0
  137. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php +27 -0
  138. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php +37 -0
  139. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php +38 -0
  140. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php +33 -0
  141. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php +34 -0
  142. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php +38 -0
  143. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php +33 -0
  144. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php +36 -0
  145. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-si.php +34 -0
  146. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php +30 -0
  147. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php +36 -0
  148. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php +28 -0
  149. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php +28 -0
  150. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php +27 -0
  151. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php +28 -0
  152. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php +38 -0
  153. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php +28 -0
  154. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ur.php +30 -0
  155. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php +27 -0
  156. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php +29 -0
  157. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php +36 -0
  158. package/src/api/vendor/phpmailer/phpmailer/phpcs.xml.dist +52 -0
  159. package/src/api/vendor/phpmailer/phpmailer/phpdoc.dist.xml +20 -0
  160. package/src/api/vendor/phpmailer/phpmailer/phpunit.xml.dist +36 -0
  161. package/src/api/vendor/phpmailer/phpmailer/src/DSNConfigurator.php +245 -0
  162. package/src/api/vendor/phpmailer/phpmailer/src/Exception.php +40 -0
  163. package/src/api/vendor/phpmailer/phpmailer/src/OAuth.php +139 -0
  164. package/src/api/vendor/phpmailer/phpmailer/src/OAuthTokenProvider.php +44 -0
  165. package/src/api/vendor/phpmailer/phpmailer/src/PHPMailer.php +5525 -0
  166. package/src/api/vendor/phpmailer/phpmailer/src/POP3.php +470 -0
  167. package/src/api/vendor/phpmailer/phpmailer/src/SMTP.php +1617 -0
  168. package/src/api/vendor/phpmailer/phpmailer/test/DebugLogTestListener.php +47 -0
  169. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/FileIsAccessibleTest/accessible.txt +1 -0
  170. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/FileIsAccessibleTest/inaccessible.txt +1 -0
  171. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-fr.php +10 -0
  172. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-nl.php +10 -0
  173. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xa_scri_cc.php +9 -0
  174. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xb_scri.php +9 -0
  175. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xc_cc.php +9 -0
  176. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xd_cc.php +9 -0
  177. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xd_scri.php +9 -0
  178. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xe.php +9 -0
  179. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xx.php +9 -0
  180. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-yy.php +16 -0
  181. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-yz.php +16 -0
  182. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-zz.php +20 -0
  183. package/src/api/vendor/phpmailer/phpmailer/test/Language/TranslationCompletenessTest.php +97 -0
  184. package/src/api/vendor/phpmailer/phpmailer/test/OAuth/OAuthTest.php +76 -0
  185. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/AddEmbeddedImageTest.php +178 -0
  186. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/AddStringAttachmentTest.php +147 -0
  187. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/AddStringEmbeddedImageTest.php +161 -0
  188. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/AddrFormatTest.php +70 -0
  189. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/AuthCRAMMD5Test.php +48 -0
  190. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/CustomHeaderTest.php +285 -0
  191. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/DKIMTest.php +258 -0
  192. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/DKIMWithoutExceptionsTest.php +46 -0
  193. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/DSNConfiguratorTest.php +221 -0
  194. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/EncodeQTest.php +110 -0
  195. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/EncodeStringTest.php +135 -0
  196. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/FileIsAccessibleTest.php +103 -0
  197. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/FilenameToTypeTest.php +74 -0
  198. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/GenerateIdTest.php +75 -0
  199. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/GetLastMessageIDTest.php +110 -0
  200. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/HasLineLongerThanMaxTest.php +158 -0
  201. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/Html2TextTest.php +231 -0
  202. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/ICalTest.php +126 -0
  203. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/IsPermittedPathTest.php +108 -0
  204. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/IsValidHostTest.php +107 -0
  205. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/LocalizationTest.php +505 -0
  206. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/MailTransportTest.php +261 -0
  207. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/MbPathinfoTest.php +171 -0
  208. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/MimeTypesTest.php +70 -0
  209. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/NormalizeBreaksTest.php +111 -0
  210. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/PHPMailerTest.php +1388 -0
  211. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/ParseAddressesTest.php +321 -0
  212. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/PunyencodeAddressTest.php +141 -0
  213. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/QuotedStringTest.php +70 -0
  214. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/ReplyToGetSetClearTest.php +444 -0
  215. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/SetErrorTest.php +154 -0
  216. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/SetFromTest.php +202 -0
  217. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/SetTest.php +81 -0
  218. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/SetWordWrapTest.php +120 -0
  219. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/Utf8CharBoundaryTest.php +66 -0
  220. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/ValidateAddressCustomValidatorTest.php +116 -0
  221. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/ValidateAddressTest.php +485 -0
  222. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/WrapTextTest.php +125 -0
  223. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/XMailerTest.php +75 -0
  224. package/src/api/vendor/phpmailer/phpmailer/test/POP3/PopBeforeSmtpTest.php +139 -0
  225. package/src/api/vendor/phpmailer/phpmailer/test/PreSendTestCase.php +46 -0
  226. package/src/api/vendor/phpmailer/phpmailer/test/Security/DenialOfServiceVectorsTest.php +52 -0
  227. package/src/api/vendor/phpmailer/phpmailer/test/SendTestCase.php +126 -0
  228. package/src/api/vendor/phpmailer/phpmailer/test/TestCase.php +392 -0
  229. package/src/api/vendor/phpmailer/phpmailer/test/fakepopserver.sh +126 -0
  230. package/src/api/vendor/phpmailer/phpmailer/test/fakesendmail.sh +22 -0
  231. package/src/api/vendor/phpmailer/phpmailer/test/runfakepopserver.sh +12 -0
  232. package/src/api/vendor/phpmailer/phpmailer/test/testbootstrap-dist.php +8 -0
  233. package/src/api/vendor/phpmailer/phpmailer/test/validators.php +12 -0
  234. package/src/api/vendor/phpoption/phpoption/.gitattributes +13 -0
  235. package/src/api/vendor/phpoption/phpoption/.github/CODE_OF_CONDUCT.md +132 -0
  236. package/src/api/vendor/phpoption/phpoption/.github/CONTRIBUTING.md +30 -0
  237. package/src/api/vendor/phpoption/phpoption/.github/FUNDING.yml +2 -0
  238. package/src/api/vendor/phpoption/phpoption/.github/SECURITY.md +14 -0
  239. package/src/api/vendor/phpoption/phpoption/.github/workflows/static.yml +40 -0
  240. package/src/api/vendor/phpoption/phpoption/.github/workflows/tests.yml +40 -0
  241. package/src/api/vendor/phpoption/phpoption/LICENSE +201 -0
  242. package/src/api/vendor/phpoption/phpoption/Makefile +17 -0
  243. package/src/api/vendor/phpoption/phpoption/README.md +201 -0
  244. package/src/api/vendor/phpoption/phpoption/composer.json +50 -0
  245. package/src/api/vendor/phpoption/phpoption/phpstan-baseline.neon +44 -0
  246. package/src/api/vendor/phpoption/phpoption/phpstan.neon.dist +7 -0
  247. package/src/api/vendor/phpoption/phpoption/phpunit.xml.dist +13 -0
  248. package/src/api/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php +175 -0
  249. package/src/api/vendor/phpoption/phpoption/src/PhpOption/None.php +136 -0
  250. package/src/api/vendor/phpoption/phpoption/src/PhpOption/Option.php +434 -0
  251. package/src/api/vendor/phpoption/phpoption/src/PhpOption/Some.php +169 -0
  252. package/src/api/vendor/phpoption/phpoption/tests/PhpOption/Tests/EnsureTest.php +72 -0
  253. package/src/api/vendor/phpoption/phpoption/tests/PhpOption/Tests/LazyOptionTest.php +357 -0
  254. package/src/api/vendor/phpoption/phpoption/tests/PhpOption/Tests/NoneTest.php +153 -0
  255. package/src/api/vendor/phpoption/phpoption/tests/PhpOption/Tests/OptionTest.php +166 -0
  256. package/src/api/vendor/phpoption/phpoption/tests/PhpOption/Tests/SomeTest.php +194 -0
  257. package/src/api/vendor/phpoption/phpoption/tests/bootstrap.php +8 -0
  258. package/src/api/vendor/phpoption/phpoption/vendor-bin/phpstan/composer.json +8 -0
  259. package/src/api/vendor/symfony/polyfill-ctype/Ctype.php +232 -0
  260. package/src/api/vendor/symfony/polyfill-ctype/LICENSE +19 -0
  261. package/src/api/vendor/symfony/polyfill-ctype/README.md +12 -0
  262. package/src/api/vendor/symfony/polyfill-ctype/bootstrap.php +50 -0
  263. package/src/api/vendor/symfony/polyfill-ctype/bootstrap80.php +46 -0
  264. package/src/api/vendor/symfony/polyfill-ctype/composer.json +38 -0
  265. package/src/api/vendor/symfony/polyfill-mbstring/LICENSE +19 -0
  266. package/src/api/vendor/symfony/polyfill-mbstring/Mbstring.php +1077 -0
  267. package/src/api/vendor/symfony/polyfill-mbstring/README.md +13 -0
  268. package/src/api/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php +119 -0
  269. package/src/api/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1397 -0
  270. package/src/api/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +5 -0
  271. package/src/api/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +1489 -0
  272. package/src/api/vendor/symfony/polyfill-mbstring/bootstrap.php +171 -0
  273. package/src/api/vendor/symfony/polyfill-mbstring/bootstrap80.php +167 -0
  274. package/src/api/vendor/symfony/polyfill-mbstring/composer.json +39 -0
  275. package/src/api/vendor/symfony/polyfill-php80/LICENSE +19 -0
  276. package/src/api/vendor/symfony/polyfill-php80/Php80.php +115 -0
  277. package/src/api/vendor/symfony/polyfill-php80/PhpToken.php +106 -0
  278. package/src/api/vendor/symfony/polyfill-php80/README.md +25 -0
  279. package/src/api/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +31 -0
  280. package/src/api/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php +16 -0
  281. package/src/api/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php +20 -0
  282. package/src/api/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php +16 -0
  283. package/src/api/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php +16 -0
  284. package/src/api/vendor/symfony/polyfill-php80/bootstrap.php +42 -0
  285. package/src/api/vendor/symfony/polyfill-php80/composer.json +37 -0
  286. package/src/api/vendor/vlucas/phpdotenv/.editorconfig +15 -0
  287. package/src/api/vendor/vlucas/phpdotenv/.gitattributes +15 -0
  288. package/src/api/vendor/vlucas/phpdotenv/.github/CODE_OF_CONDUCT.md +132 -0
  289. package/src/api/vendor/vlucas/phpdotenv/.github/CONTRIBUTING.md +30 -0
  290. package/src/api/vendor/vlucas/phpdotenv/.github/FUNDING.yml +2 -0
  291. package/src/api/vendor/vlucas/phpdotenv/.github/SECURITY.md +14 -0
  292. package/src/api/vendor/vlucas/phpdotenv/.github/workflows/static.yml +40 -0
  293. package/src/api/vendor/vlucas/phpdotenv/.github/workflows/tests.yml +70 -0
  294. package/src/api/vendor/vlucas/phpdotenv/LICENSE +30 -0
  295. package/src/api/vendor/vlucas/phpdotenv/Makefile +17 -0
  296. package/src/api/vendor/vlucas/phpdotenv/README.md +370 -0
  297. package/src/api/vendor/vlucas/phpdotenv/UPGRADING.md +196 -0
  298. package/src/api/vendor/vlucas/phpdotenv/composer.json +60 -0
  299. package/src/api/vendor/vlucas/phpdotenv/phpstan-baseline.neon +157 -0
  300. package/src/api/vendor/vlucas/phpdotenv/phpstan.neon.dist +7 -0
  301. package/src/api/vendor/vlucas/phpdotenv/phpunit.xml.dist +13 -0
  302. package/src/api/vendor/vlucas/phpdotenv/src/Dotenv.php +267 -0
  303. package/src/api/vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php +12 -0
  304. package/src/api/vendor/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php +12 -0
  305. package/src/api/vendor/vlucas/phpdotenv/src/Exception/InvalidFileException.php +12 -0
  306. package/src/api/vendor/vlucas/phpdotenv/src/Exception/InvalidPathException.php +12 -0
  307. package/src/api/vendor/vlucas/phpdotenv/src/Exception/ValidationException.php +12 -0
  308. package/src/api/vendor/vlucas/phpdotenv/src/Loader/Loader.php +48 -0
  309. package/src/api/vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php +20 -0
  310. package/src/api/vendor/vlucas/phpdotenv/src/Loader/Resolver.php +65 -0
  311. package/src/api/vendor/vlucas/phpdotenv/src/Parser/Entry.php +59 -0
  312. package/src/api/vendor/vlucas/phpdotenv/src/Parser/EntryParser.php +299 -0
  313. package/src/api/vendor/vlucas/phpdotenv/src/Parser/Lexer.php +58 -0
  314. package/src/api/vendor/vlucas/phpdotenv/src/Parser/Lines.php +127 -0
  315. package/src/api/vendor/vlucas/phpdotenv/src/Parser/Parser.php +53 -0
  316. package/src/api/vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php +19 -0
  317. package/src/api/vendor/vlucas/phpdotenv/src/Parser/Value.php +88 -0
  318. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php +15 -0
  319. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php +89 -0
  320. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php +80 -0
  321. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php +88 -0
  322. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php +85 -0
  323. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php +110 -0
  324. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php +48 -0
  325. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php +64 -0
  326. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php +91 -0
  327. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php +17 -0
  328. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php +104 -0
  329. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php +88 -0
  330. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php +27 -0
  331. package/src/api/vendor/vlucas/phpdotenv/src/Repository/AdapterRepository.php +107 -0
  332. package/src/api/vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php +272 -0
  333. package/src/api/vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php +51 -0
  334. package/src/api/vendor/vlucas/phpdotenv/src/Store/File/Paths.php +44 -0
  335. package/src/api/vendor/vlucas/phpdotenv/src/Store/File/Reader.php +81 -0
  336. package/src/api/vendor/vlucas/phpdotenv/src/Store/FileStore.php +72 -0
  337. package/src/api/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php +141 -0
  338. package/src/api/vendor/vlucas/phpdotenv/src/Store/StoreInterface.php +17 -0
  339. package/src/api/vendor/vlucas/phpdotenv/src/Store/StringStore.php +37 -0
  340. package/src/api/vendor/vlucas/phpdotenv/src/Util/Regex.php +112 -0
  341. package/src/api/vendor/vlucas/phpdotenv/src/Util/Str.php +108 -0
  342. package/src/api/vendor/vlucas/phpdotenv/src/Validator.php +207 -0
  343. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/DotenvTest.php +387 -0
  344. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Loader/LoaderTest.php +86 -0
  345. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/EntryParserTest.php +234 -0
  346. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LexerTest.php +40 -0
  347. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LinesTest.php +53 -0
  348. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/ParserTest.php +98 -0
  349. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ArrayAdapterTest.php +57 -0
  350. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/EnvConstAdapterTest.php +75 -0
  351. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/PutenvAdapterTest.php +52 -0
  352. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ServerConstAdapterTest.php +75 -0
  353. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/RepositoryTest.php +305 -0
  354. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Store/StoreTest.php +141 -0
  355. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/ValidatorTest.php +479 -0
  356. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/.env +5 -0
  357. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/assertions.env +18 -0
  358. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/booleans.env +33 -0
  359. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/commented.env +15 -0
  360. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/empty.env +1 -0
  361. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/example.env +1 -0
  362. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/exported.env +7 -0
  363. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/immutable.env +1 -0
  364. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/integers.env +17 -0
  365. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/large.env +2 -0
  366. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/multibyte.env +3 -0
  367. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/multiline.env +14 -0
  368. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/multiple.env +4 -0
  369. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/mutable.env +1 -0
  370. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/nested.env +15 -0
  371. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/quoted.env +11 -0
  372. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/specialchars.env +8 -0
  373. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/unicodevarnames.env +2 -0
  374. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/utf8-with-bom-encoding.env +3 -0
  375. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/windows.env +1 -0
  376. package/src/api/vendor/vlucas/phpdotenv/vendor-bin/phpstan/composer.json +15 -0
  377. package/src/api/configExample.php +0 -28
  378. package/src/api/sendEmail.php +0 -131
@@ -0,0 +1,75 @@
1
+ <?php
2
+
3
+ /**
4
+ * PHPMailer - PHP email transport unit tests.
5
+ * PHP version 5.5.
6
+ *
7
+ * @author Marcus Bointon <phpmailer@synchromedia.co.uk>
8
+ * @author Andy Prevost
9
+ * @copyright 2012 - 2020 Marcus Bointon
10
+ * @copyright 2004 - 2009 Andy Prevost
11
+ * @license https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License
12
+ */
13
+
14
+ namespace PHPMailer\Test\PHPMailer;
15
+
16
+ use PHPMailer\PHPMailer\PHPMailer;
17
+ use PHPMailer\Test\PreSendTestCase;
18
+
19
+ /**
20
+ * Test unique ID generation functionality.
21
+ *
22
+ * @covers \PHPMailer\PHPMailer\PHPMailer::generateId
23
+ */
24
+ final class GenerateIdTest extends PreSendTestCase
25
+ {
26
+ /**
27
+ * Test generating a unique ID.
28
+ *
29
+ * To fully test the method under test, the tests should be run on the following system configurations:
30
+ * - PHP >= 7.0 to hit `random_bytes()`;
31
+ * - PHP < 7.0 with OpenSSL enabled to hit `openssl_random_pseudo_bytes()`;
32
+ * - PHP < 7.0 with the OpenSSL extension disabled;
33
+ * - PHP >= 7.0 with the OpenSSL extension disabled and the `random_bytes()` function
34
+ * in the php.ini `disable_functions` list.
35
+ *
36
+ * Note: The exact text string length of result may vary due to the str_replace() in the final statement
37
+ * of the method, but it should always be at least 32 characters long.
38
+ */
39
+ public function testGenerateID()
40
+ {
41
+ $this->Mail->Body = 'Testing 1, 2, 3';
42
+ $this->Mail->isHTML();
43
+ $this->Mail->AltBody = $this->Mail->Body;
44
+ $this->buildBody();
45
+ $this->Mail->preSend();
46
+ $message = $this->Mail->getSentMIMEMessage();
47
+
48
+ // Find the generated ID in the message.
49
+ self::assertSame(
50
+ 1,
51
+ preg_match(
52
+ '`Content-Type: multipart/alternative;\s+boundary="(b[1-3]=_[A-Za-z0-9]{32,})"`',
53
+ $message,
54
+ $matches
55
+ ),
56
+ 'Boundary identifier header line not found in message'
57
+ );
58
+
59
+ // Check that the generated ID is used in at least one boundary.
60
+ $LE = PHPMailer::getLE();
61
+ self::assertStringContainsString(
62
+ $LE . '--' . $matches[1] . $LE,
63
+ $message,
64
+ 'No boundaries using the generated ID found in message'
65
+ );
66
+ }
67
+
68
+ public function testBoundaries()
69
+ {
70
+ $boundaries = $this->Mail->getBoundaries();
71
+ self::assertMatchesRegularExpression('/b[1-3]=_[A-Za-z0-9]{32,}/', $boundaries[1]);
72
+ self::assertMatchesRegularExpression('/b[1-3]=_[A-Za-z0-9]{32,}/', $boundaries[2]);
73
+ self::assertMatchesRegularExpression('/b[1-3]=_[A-Za-z0-9]{32,}/', $boundaries[3]);
74
+ }
75
+ }
@@ -0,0 +1,110 @@
1
+ <?php
2
+
3
+ /**
4
+ * PHPMailer - PHP email transport unit tests.
5
+ * PHP version 5.5.
6
+ *
7
+ * @author Marcus Bointon <phpmailer@synchromedia.co.uk>
8
+ * @author Andy Prevost
9
+ * @copyright 2012 - 2020 Marcus Bointon
10
+ * @copyright 2004 - 2009 Andy Prevost
11
+ * @license https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License
12
+ */
13
+
14
+ namespace PHPMailer\Test\PHPMailer;
15
+
16
+ use PHPMailer\Test\PreSendTestCase;
17
+
18
+ /**
19
+ * Test setting and retrieving message ID.
20
+ *
21
+ * @covers \PHPMailer\PHPMailer\PHPMailer::createHeader
22
+ * @covers \PHPMailer\PHPMailer\PHPMailer::getLastMessageID
23
+ */
24
+ final class GetLastMessageIDTest extends PreSendTestCase
25
+ {
26
+ /**
27
+ * Test setting and retrieving an invalid message ID.
28
+ *
29
+ * @dataProvider dataMessageIDInvalid
30
+ *
31
+ * @param string $id Custom, invalid message ID.
32
+ */
33
+ public function testMessageIDInvalid($id)
34
+ {
35
+ $this->Mail->Body = 'Test message ID.';
36
+ $this->Mail->MessageID = $id;
37
+ $this->buildBody();
38
+ $this->Mail->preSend();
39
+ $lastid = $this->Mail->getLastMessageID();
40
+ self::assertNotSame($id, $lastid, 'Invalid Message ID allowed');
41
+ }
42
+
43
+ /**
44
+ * Data provider.
45
+ *
46
+ * @return array
47
+ */
48
+ public function dataMessageIDInvalid()
49
+ {
50
+ $hash = hash('sha256', 12345);
51
+
52
+ return [
53
+ 'Invalid: plain hash' => [$hash],
54
+ 'Invalid: missing brackets' => [$hash . '@example.com'],
55
+ 'Invalid: missing @' => ['<' . $hash . 'example.com>'],
56
+ 'Invalid: new line after bracket' => ['<' . $hash . "@example.com>\n"],
57
+ 'Invalid: no text before @' => ['<@example.com>'],
58
+ 'Invalid: no text after @' => ['<' . $hash . '@>'],
59
+ 'Invalid: no text before or after @' => ['<@>'],
60
+ 'Invalid: multiple @ signs' => ['<' . $hash . '@example@com>'],
61
+ 'Invalid: new line after end bracket' => ['<' . $hash . "@>\n"],
62
+ 'Invalid: brackets within 1' => ['<' . $hash . '<@>example.com>'],
63
+ 'Invalid: brackets within 2' => ['<<' . $hash . '@example>com>'],
64
+ ];
65
+ }
66
+
67
+ /**
68
+ * Test setting and retrieving a valid, custom message ID.
69
+ *
70
+ * @dataProvider dataMessageIDValid
71
+ *
72
+ * @param string $id Custom, valid message ID.
73
+ */
74
+ public function testMessageIDValid($id)
75
+ {
76
+ $this->Mail->Body = 'Test message ID.';
77
+ $this->Mail->MessageID = $id;
78
+ $this->buildBody();
79
+ $this->Mail->preSend();
80
+ $lastid = $this->Mail->getLastMessageID();
81
+ self::assertSame($id, $lastid, 'Custom Message ID not used');
82
+ }
83
+
84
+ /**
85
+ * Data provider.
86
+ *
87
+ * @return array
88
+ */
89
+ public function dataMessageIDValid()
90
+ {
91
+ $hash = hash('sha256', 12345);
92
+
93
+ return [
94
+ 'hashed pre @' => ['<' . $hash . '@example.com>'],
95
+ ];
96
+ }
97
+
98
+ /**
99
+ * Test setting and retrieving an empty message ID.
100
+ */
101
+ public function testMessageIDEmpty()
102
+ {
103
+ $this->Mail->Body = 'Test message ID.';
104
+ $this->Mail->MessageID = '';
105
+ $this->buildBody();
106
+ $this->Mail->preSend();
107
+ $lastid = $this->Mail->getLastMessageID();
108
+ self::assertMatchesRegularExpression('/^<.+@.+>$/D', $lastid, 'Invalid default Message ID');
109
+ }
110
+ }
@@ -0,0 +1,158 @@
1
+ <?php
2
+
3
+ /**
4
+ * PHPMailer - PHP email transport unit tests.
5
+ * PHP version 5.5.
6
+ *
7
+ * @author Marcus Bointon <phpmailer@synchromedia.co.uk>
8
+ * @author Andy Prevost
9
+ * @copyright 2012 - 2020 Marcus Bointon
10
+ * @copyright 2004 - 2009 Andy Prevost
11
+ * @license https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License
12
+ */
13
+
14
+ namespace PHPMailer\Test\PHPMailer;
15
+
16
+ use PHPMailer\PHPMailer\PHPMailer;
17
+ use PHPMailer\Test\PreSendTestCase;
18
+
19
+ /**
20
+ * Test line length detection and handling.
21
+ */
22
+ final class HasLineLongerThanMaxTest extends PreSendTestCase
23
+ {
24
+ /**
25
+ * Test constructing a multipart message that contains lines that are too long for RFC compliance.
26
+ *
27
+ * @covers \PHPMailer\PHPMailer\PHPMailer::hasLineLongerThanMax
28
+ */
29
+ public function testLongBody()
30
+ {
31
+ $oklen = str_repeat(str_repeat('0', PHPMailer::MAX_LINE_LENGTH) . PHPMailer::getLE(), 2);
32
+ // Use +2 to ensure line length is over limit - LE may only be 1 char.
33
+ $badlen = str_repeat(str_repeat('1', PHPMailer::MAX_LINE_LENGTH + 2) . PHPMailer::getLE(), 2);
34
+
35
+ $this->Mail->Body = 'This message contains lines that are too long.' .
36
+ PHPMailer::getLE() . $oklen . $badlen . $oklen;
37
+ self::assertTrue(
38
+ PHPMailer::hasLineLongerThanMax($this->Mail->Body),
39
+ 'Test content does not contain long lines!'
40
+ );
41
+
42
+ $this->Mail->isHTML();
43
+ $this->buildBody();
44
+ $this->Mail->AltBody = $this->Mail->Body;
45
+ $this->Mail->Encoding = '8bit';
46
+ $this->Mail->preSend();
47
+ $message = $this->Mail->getSentMIMEMessage();
48
+ self::assertFalse(
49
+ PHPMailer::hasLineLongerThanMax($message),
50
+ 'Long line not corrected (Max: ' . (PHPMailer::MAX_LINE_LENGTH + strlen(PHPMailer::getLE())) . ' chars)'
51
+ );
52
+ self::assertStringContainsString(
53
+ 'Content-Transfer-Encoding: quoted-printable',
54
+ $message,
55
+ 'Long line did not cause transfer encoding switch.'
56
+ );
57
+ }
58
+
59
+ /**
60
+ * Test constructing a SMIME signed message that contains lines that are too long for RFC compliance.
61
+ *
62
+ * @covers \PHPMailer\PHPMailer\PHPMailer::hasLineLongerThanMax
63
+ */
64
+ public function testLongBodySmime()
65
+ {
66
+ $oklen = str_repeat(str_repeat('0', PHPMailer::MAX_LINE_LENGTH) . PHPMailer::getLE(), 2);
67
+ // Use +2 to ensure line length is over limit - LE may only be 1 char.
68
+ $badlen = str_repeat(str_repeat('1', PHPMailer::MAX_LINE_LENGTH + 2) . PHPMailer::getLE(), 2);
69
+
70
+ $this->Mail->Body = 'This message contains lines that are too long.' .
71
+ PHPMailer::getLE() . $oklen . $badlen . $oklen;
72
+ self::assertTrue(
73
+ PHPMailer::hasLineLongerThanMax($this->Mail->Body),
74
+ 'Test content does not contain long lines!'
75
+ );
76
+
77
+ $this->Mail->isHTML();
78
+ $this->buildBody();
79
+ #$this->Mail->AltBody = $this->Mail->Body;
80
+ $this->Mail->Encoding = '8bit';
81
+ $this->Mail->sign(
82
+ __DIR__ . '/../Fixtures/HasLineLongerThanMaxTest/cert.pem',
83
+ __DIR__ . '/../Fixtures/HasLineLongerThanMaxTest/key.pem',
84
+ null
85
+ );
86
+ $this->Mail->preSend();
87
+ $message = $this->Mail->getSentMIMEMessage();
88
+ self::assertFalse(
89
+ PHPMailer::hasLineLongerThanMax($message),
90
+ 'Long line not corrected (Max: ' . (PHPMailer::MAX_LINE_LENGTH + strlen(PHPMailer::getLE())) . ' chars)'
91
+ );
92
+ self::assertStringContainsString(
93
+ 'Content-Transfer-Encoding: quoted-printable',
94
+ $message,
95
+ 'Long line did not cause transfer encoding switch.'
96
+ );
97
+ }
98
+
99
+ /**
100
+ * Test constructing a message that does NOT contain lines that are too long for RFC compliance.
101
+ *
102
+ * @covers \PHPMailer\PHPMailer\PHPMailer::hasLineLongerThanMax
103
+ */
104
+ public function testShortBody()
105
+ {
106
+ $oklen = str_repeat(str_repeat('0', PHPMailer::MAX_LINE_LENGTH) . PHPMailer::getLE(), 10);
107
+
108
+ $this->Mail->Body = 'This message does not contain lines that are too long.' .
109
+ PHPMailer::getLE() . $oklen;
110
+ self::assertFalse(
111
+ PHPMailer::hasLineLongerThanMax($this->Mail->Body),
112
+ 'Test content contains long lines!'
113
+ );
114
+
115
+ $this->buildBody();
116
+ $this->Mail->Encoding = '8bit';
117
+ $this->Mail->preSend();
118
+ $message = $this->Mail->getSentMIMEMessage();
119
+ self::assertFalse(PHPMailer::hasLineLongerThanMax($message), 'Long line not corrected.');
120
+ self::assertStringNotContainsString(
121
+ 'Content-Transfer-Encoding: quoted-printable',
122
+ $message,
123
+ 'Short line caused transfer encoding switch.'
124
+ );
125
+ }
126
+
127
+ /**
128
+ * Test line length detection.
129
+ *
130
+ * @covers \PHPMailer\PHPMailer\PHPMailer::createBody
131
+ * @covers \PHPMailer\PHPMailer\PHPMailer::hasLineLongerThanMax
132
+ */
133
+ public function testLineLength()
134
+ {
135
+ // May have been altered by earlier tests, can interfere with line break format.
136
+ $this->Mail->isSMTP();
137
+ $this->Mail->preSend();
138
+ $oklen = str_repeat(str_repeat('0', PHPMailer::MAX_LINE_LENGTH) . "\r\n", 2);
139
+ $badlen = str_repeat(str_repeat('1', PHPMailer::MAX_LINE_LENGTH + 1) . "\r\n", 2);
140
+ self::assertTrue(PHPMailer::hasLineLongerThanMax($badlen), 'Long line not detected (only)');
141
+ self::assertTrue(PHPMailer::hasLineLongerThanMax($oklen . $badlen), 'Long line not detected (first)');
142
+ self::assertTrue(PHPMailer::hasLineLongerThanMax($badlen . $oklen), 'Long line not detected (last)');
143
+ self::assertTrue(
144
+ PHPMailer::hasLineLongerThanMax($oklen . $badlen . $oklen),
145
+ 'Long line not detected (middle)'
146
+ );
147
+ self::assertFalse(PHPMailer::hasLineLongerThanMax($oklen), 'Long line false positive');
148
+
149
+ $this->Mail->isHTML(false);
150
+ $this->Mail->Subject .= ': Line length test';
151
+ $this->Mail->CharSet = 'UTF-8';
152
+ $this->Mail->Encoding = '8bit';
153
+ $this->Mail->Body = $oklen . $badlen . $oklen . $badlen;
154
+ $this->buildBody();
155
+ self::assertTrue($this->Mail->preSend(), $this->Mail->ErrorInfo);
156
+ self::assertSame('quoted-printable', $this->Mail->Encoding, 'Long line did not override transfer encoding');
157
+ }
158
+ }
@@ -0,0 +1,231 @@
1
+ <?php
2
+
3
+ /**
4
+ * PHPMailer - PHP email transport unit tests.
5
+ * PHP version 5.5.
6
+ *
7
+ * @author Marcus Bointon <phpmailer@synchromedia.co.uk>
8
+ * @author Andy Prevost
9
+ * @copyright 2012 - 2020 Marcus Bointon
10
+ * @copyright 2004 - 2009 Andy Prevost
11
+ * @license https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License
12
+ */
13
+
14
+ namespace PHPMailer\Test\PHPMailer;
15
+
16
+ use PHPMailer\PHPMailer\PHPMailer;
17
+ use PHPMailer\Test\TestCase;
18
+
19
+ /**
20
+ * Test HTML to text conversion functionality.
21
+ *
22
+ * @covers \PHPMailer\PHPMailer\PHPMailer::html2text
23
+ */
24
+ final class Html2TextTest extends TestCase
25
+ {
26
+ /**
27
+ * Test converting an arbitrary HTML string into plain text.
28
+ *
29
+ * @dataProvider dataHtml2Text
30
+ *
31
+ * @param string $input Arbitrary string, potentially containing HTML.
32
+ * @param string $expected The expected function return value.
33
+ * @param string $charset Optional. Charset to use.
34
+ */
35
+ public function testHtml2Text($input, $expected, $charset = null)
36
+ {
37
+ if (isset($charset)) {
38
+ $this->Mail->CharSet = $charset;
39
+ }
40
+
41
+ $result = $this->Mail->html2text($input);
42
+ self::assertSame($expected, $result);
43
+ }
44
+
45
+ /**
46
+ * Data provider.
47
+ *
48
+ * @return array
49
+ */
50
+ public function dataHtml2Text()
51
+ {
52
+ return [
53
+ 'Plain text, no encoded entities, surrounded by whitespace' => [
54
+ 'input' => ' Lorem ipsum dolor sit amet, consectetur adipiscing elit. ',
55
+ 'expected' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
56
+ ],
57
+ 'Plain text with encoded entities' => [
58
+ 'input' => 'I&ntilde;t&euml;rn&acirc;ti&ocirc;n&agrave;liz&aelig;ti&oslash;n',
59
+ 'expected' => 'Iñtërnâtiônàlizætiøn',
60
+ 'charset' => PHPMailer::CHARSET_UTF8
61
+ ],
62
+
63
+ 'Simple HTML, including HTML comment and encoded quotes' => [
64
+ 'input' => '<p>Test paragraph.</p>'
65
+ . '<!-- Comment -->'
66
+ . ' <a href="#fragment">Other text with &#39; and &quot;</a>',
67
+ 'expected' => 'Test paragraph. Other text with \' and "',
68
+ ],
69
+ 'Simple HTML, including self-closing tags' => [
70
+ 'input' => '<p>Test<br/>paragraph<br /><img src="file.png" alt="alt text" />.</p>',
71
+ 'expected' => 'Testparagraph.',
72
+ ],
73
+ 'Simple HTML, paragraph fusing' => [
74
+ 'input' => '<div>
75
+ <P style="color:blue;">color is blue</P><p>size is <span style="font-size:200%;">huge</span></p>
76
+ <p>material is wood</p>
77
+ </div>',
78
+ 'expected' => 'color is bluesize is huge
79
+ material is wood',
80
+ ],
81
+ 'Full HTML message with head, title, body etc' => [
82
+ 'input' => <<<EOT
83
+ <html>
84
+ <head>
85
+ <title>HTML email test</title>
86
+ </head>
87
+ <body>
88
+ <h1>PHPMailer does HTML!</h1>
89
+ <p>This is a <strong>test message</strong> written in HTML.<br>
90
+ Go to <a href="https://github.com/PHPMailer/PHPMailer">
91
+ https://github.com/PHPMailer/PHPMailer</a>
92
+ for new versions of PHPMailer.</p>
93
+ <p>Thank you!</p>
94
+ </body>
95
+ </html>
96
+ EOT
97
+ ,
98
+ // Note: be careful when updating & saving this file. The trailing space on
99
+ // the line with "Go to " needs to be preserved!
100
+ 'expected' => <<<EOT
101
+ PHPMailer does HTML!
102
+ This is a test message written in HTML.
103
+ Go to
104
+ https://github.com/PHPMailer/PHPMailer
105
+ for new versions of PHPMailer.
106
+ Thank you!
107
+ EOT
108
+ ,
109
+ ],
110
+ // PHP bug: https://bugs.php.net/bug.php?id=78346
111
+ 'Plain text, with PHP short open echo tags' => [
112
+ 'input' => '<?= \'<?= 1 ?>\' ?>2',
113
+ 'expected' => '2',
114
+ ],
115
+ 'HTML with script tag' => [
116
+ 'input' => 'lorem<script>alert("xss")</script>ipsum',
117
+ 'expected' => 'loremipsum',
118
+ ],
119
+ 'HTML with style tag with content. uppercase HTML tags' => [
120
+ 'input' => "lorem<STYLE>* { display: 'none' }</STYLE>ipsum",
121
+ 'expected' => 'loremipsum',
122
+ ],
123
+ 'HTML with script tag nested in style tag' => [
124
+ 'input' => "lorem<style>* { display: 'none' }<script>alert('xss')</script></style>ipsum",
125
+ 'expected' => 'loremipsum',
126
+ ],
127
+
128
+ 'Plain text which will turn into HTML script tag on decoding' => [
129
+ 'input' => 'lorem&lt;script&gt;alert("xss")&lt;/script&gt;ipsum',
130
+ 'expected' => 'lorem<script>alert("xss")</script>ipsum',
131
+ ],
132
+ 'HTML with a "less than" sign in the text' => [
133
+ 'input' => '<p><span style="color: #ff0000; background-color: #000000;">Complex</span> '
134
+ . '<span style="font-family: impact,chicago;">text <50% </span> '
135
+ . '<a href="https://example.com/"><em>with</em></a> '
136
+ . '<span style="font-size: 36pt;"><strong>tags</strong></span></p>',
137
+ 'expected' => 'Complex text',
138
+ ],
139
+ 'HTML with an encoded "less than" sign in the text' => [
140
+ 'input' => '<p><span style="color: #ff0000; background-color: #000000;">Complex</span> '
141
+ . '<span style="font-family: impact,chicago;">text &lt;50% </span> '
142
+ . '<a href="https://example.com/"><em>with</em></a> '
143
+ . '<span style="font-size: 36pt;"><strong>tags</strong></span></p>',
144
+ 'expected' => 'Complex text <50% with tags',
145
+ ],
146
+ ];
147
+ }
148
+
149
+ /**
150
+ * Test the use of the `$callback` parameter to use a custom callback function or fall back to the
151
+ * native implementation.
152
+ *
153
+ * @dataProvider dataHtml2TextAdvanced
154
+ *
155
+ * @param string $input Arbitrary string, potentially containing HTML.
156
+ * @param callable $callback A callback function to use.
157
+ * @param string $expected The expected function return value.
158
+ */
159
+ public function testHtml2TextAdvanced($input, $callback, $expected)
160
+ {
161
+ $result = $this->Mail->html2text($input, $callback);
162
+ self::assertSame($expected, $result);
163
+ }
164
+
165
+ /**
166
+ * Data provider.
167
+ *
168
+ * Note: the callbacks used here are inherently unsafe, but that's not the point
169
+ * of the test. The point is to make sure that the function logic correctly chooses
170
+ * the use of the native conversion versus a provided callback function, not to test
171
+ * that the callback does the conversion correctly.
172
+ *
173
+ * @return array
174
+ */
175
+ public function dataHtml2TextAdvanced()
176
+ {
177
+ return [
178
+ 'No HTML, simple (unsafe) function name callback' => [
179
+ 'input' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
180
+ 'callback' => 'strip_tags',
181
+ 'expected' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
182
+ ],
183
+ 'Has HTML, simple (unsafe) closure callback' => [
184
+ 'input' => 'Lorem <div>ipsum</div> dolor sit amet<br/>,'
185
+ . ' consectetur <script>adipiscing()</script> elit.',
186
+ 'callback' => static function ($html) {
187
+ return strip_tags($html);
188
+ },
189
+ 'expected' => 'Lorem ipsum dolor sit amet, consectetur adipiscing() elit.',
190
+ ],
191
+ 'Has HTML, simple (unsafe) static class method callback' => [
192
+ 'input' => 'Lorem <div>ipsum</div> dolor sit amet<br/>,'
193
+ . ' consectetur <script>adipiscing()</script> elit.',
194
+ 'callback' => [__CLASS__, 'methodBasedCallback'],
195
+ 'expected' => 'Lorem ipsum dolor sit amet, consectetur adipiscing() elit.',
196
+ ],
197
+ 'Has HTML, simple (unsafe) object method callback' => [
198
+ 'input' => 'Lorem <div>ipsum</div> dolor sit amet<br/>,'
199
+ . ' consectetur <script>adipiscing()</script> elit.',
200
+ 'callback' => [$this, 'methodBasedCallback'],
201
+ 'expected' => 'Lorem ipsum dolor sit amet, consectetur adipiscing() elit.',
202
+ ],
203
+ 'Has HTML, explicitly use internal converter (callback = true)' => [
204
+ 'input' => 'Lorem <div>ipsum</div> dolor sit amet<br/>,'
205
+ . ' consectetur <script>adipiscing()</script> elit.',
206
+ 'callback' => true,
207
+ 'expected' => 'Lorem ipsum dolor sit amet, consectetur elit.',
208
+ ],
209
+ 'Has HTML, use internal converter due to passing invalid callback (function)' => [
210
+ 'input' => 'Lorem <div>ipsum</div> dolor sit amet<br/>,'
211
+ . ' consectetur <script>adipiscing()</script> elit.',
212
+ 'callback' => 'functionwhichdoesnotexist',
213
+ 'expected' => 'Lorem ipsum dolor sit amet, consectetur elit.',
214
+ ],
215
+ 'Has HTML, use internal converter due to passing invalid callback (static method)' => [
216
+ 'input' => 'Lorem <div>ipsum</div> dolor sit amet<br/>,'
217
+ . ' consectetur <script>adipiscing()</script> elit.',
218
+ 'callback' => ['claswhichdoesnotexist', 'foo'],
219
+ 'expected' => 'Lorem ipsum dolor sit amet, consectetur elit.',
220
+ ],
221
+ ];
222
+ }
223
+
224
+ /**
225
+ * Simplistic callback function.
226
+ */
227
+ public static function methodBasedCallback($html)
228
+ {
229
+ return strip_tags($html);
230
+ }
231
+ }