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,321 @@
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 ReflectionMethod;
18
+ use Yoast\PHPUnitPolyfills\TestCases\TestCase;
19
+
20
+ /**
21
+ * Test RFC822 address splitting.
22
+ */
23
+ final class ParseAddressesTest extends TestCase
24
+ {
25
+ /**
26
+ * Verify the expectations.
27
+ *
28
+ * Abstracted out as the same verification needs to be done for every test, just with different data.
29
+ *
30
+ * @param string $actual The actual function output.
31
+ * @param array $expected The expected function output.
32
+ */
33
+ protected function verifyExpectations($actual, $expected)
34
+ {
35
+ self::assertIsArray($actual, 'parseAddresses() did not return an array');
36
+ self::assertSame(
37
+ $expected,
38
+ $actual,
39
+ 'The return value from parseAddresses() did not match the expected output'
40
+ );
41
+ }
42
+
43
+ /**
44
+ * Test RFC822 address splitting using the native implementation
45
+ *
46
+ * @dataProvider dataAddressSplittingNative
47
+ * @covers \PHPMailer\PHPMailer\PHPMailer::parseSimplerAddresses
48
+ *
49
+ * @param string $addrstr The address list string.
50
+ * @param array $expected The expected function output.
51
+ * @param string $charset Optional.The charset to use.
52
+ */
53
+ public function testAddressSplittingNative($addrstr, $expected, $charset = PHPMailer::CHARSET_ISO88591)
54
+ {
55
+ set_error_handler(static function ($errno, $errstr) {
56
+ throw new \Exception($errstr, $errno);
57
+ }, E_USER_NOTICE);
58
+
59
+ try {
60
+ $this->expectException(\Exception::class);
61
+
62
+ $reflMethod = new ReflectionMethod(PHPMailer::class, 'parseSimplerAddresses');
63
+ (\PHP_VERSION_ID < 80100) && $reflMethod->setAccessible(true);
64
+ $parsed = $reflMethod->invoke(null, $addrstr, $charset);
65
+ (\PHP_VERSION_ID < 80100) && $reflMethod->setAccessible(false);
66
+ $this->verifyExpectations($parsed, $expected);
67
+ } finally {
68
+ restore_error_handler();
69
+ }
70
+ }
71
+
72
+ /**
73
+ * Data provider for testAddressSplittingNative.
74
+ *
75
+ * @return array
76
+ * addrstr: string,
77
+ * expected: array{name: string, address: string}[]
78
+ * charset: string
79
+ */
80
+ public function dataAddressSplittingNative()
81
+ {
82
+ return [
83
+ 'Valid address: single address without name' => [
84
+ 'addrstr' => 'joe@example.com',
85
+ 'expected' => [
86
+ ['name' => '', 'address' => 'joe@example.com'],
87
+ ],
88
+ ],
89
+ 'Valid address: two addresses with names' => [
90
+ 'addrstr' => 'Joe User <joe@example.com>, Jill User <jill@example.net>',
91
+ 'expected' => [
92
+ ['name' => 'Joe User', 'address' => 'joe@example.com'],
93
+ ['name' => 'Jill User', 'address' => 'jill@example.net'],
94
+ ],
95
+ ],
96
+ ];
97
+ }
98
+
99
+ /**
100
+ * Test if email addresses are parsed and split into a name and address.
101
+ *
102
+ * @dataProvider dataParseEmailString
103
+ * @covers \PHPMailer\PHPMailer\PHPMailer::parseEmailString
104
+ * @param mixed $addrstr
105
+ * @param mixed $expected
106
+ */
107
+ public function testParseEmailString($addrstr, $expected)
108
+ {
109
+ $reflMethod = new ReflectionMethod(PHPMailer::class, 'parseEmailString');
110
+ (\PHP_VERSION_ID < 80100) && $reflMethod->setAccessible(true);
111
+ $parsed = $reflMethod->invoke(null, $addrstr);
112
+ (\PHP_VERSION_ID < 80100) && $reflMethod->setAccessible(false);
113
+ $this->assertEquals($parsed, $expected);
114
+ }
115
+
116
+ /**
117
+ * Data provider for testParseEmailString.
118
+ *
119
+ * @return array The array is expected to have an `addrstr` and an `expected` key.
120
+ */
121
+ public function dataParseEmailString()
122
+ {
123
+ return [
124
+ 'Valid address: simple address' => [
125
+ 'addrstr' => 'Joe User <joe@example.com>',
126
+ 'expected' => ['name' => 'Joe User', 'email' => 'joe@example.com'],
127
+ ],
128
+ 'Valid address: simple address with double quotes' => [
129
+ 'addrstr' => '"Joe User" <joe@example.com>',
130
+ 'expected' => ['name' => 'Joe User', 'email' => 'joe@example.com'],
131
+ ],
132
+ 'Valid address: simple address with single quotes' => [
133
+ 'addrstr' => '\'Joe User\' <joe@example.com>',
134
+ 'expected' => ['name' => 'Joe User', 'email' => 'joe@example.com'],
135
+ ],
136
+ 'Valid address: complex address with single quotes' => [
137
+ 'addrstr' => '\'Joe<User\' <joe@example.com>',
138
+ 'expected' => ['name' => 'Joe<User', 'email' => 'joe@example.com'],
139
+ ],
140
+ 'Valid address: complex address with triangle bracket' => [
141
+ 'addrstr' => '"test<stage" <test@example.com>',
142
+ 'expected' => ['name' => 'test<stage', 'email' => 'test@example.com'],
143
+ ],
144
+ ];
145
+ }
146
+
147
+ /**
148
+ * Test RFC822 address splitting using the PHPMailer implementation
149
+ *
150
+ * @dataProvider dataAddressSplitting
151
+ * @covers \PHPMailer\PHPMailer\PHPMailer::parseAddresses
152
+ *
153
+ * @requires extension imap
154
+ * @requires extension mbstring
155
+ *
156
+ * @param string $addrstr The address list string.
157
+ * @param array $expected The expected function output.
158
+ * @param string $charset Optional. The charset to use.
159
+ */
160
+ public function testAddressSplitting($addrstr, $expected)
161
+ {
162
+ $parsed = PHPMailer::parseAddresses($addrstr, null, PHPMailer::CHARSET_UTF8);
163
+
164
+ $this->verifyExpectations($parsed, $expected);
165
+ }
166
+
167
+ /**
168
+ * Data provider.
169
+ *
170
+ * @return array The array is expected to have an `addrstr` and an `expected` key.
171
+ * The `expected` key should - as a minimum.
172
+ */
173
+ public function dataAddressSplitting()
174
+ {
175
+ return [
176
+ // Test cases with valid addresses.
177
+ 'Valid address: single address without name' => [
178
+ 'addrstr' => 'joe@example.com',
179
+ 'expected' => [
180
+ ['name' => '', 'address' => 'joe@example.com'],
181
+ ],
182
+ ],
183
+ 'Valid address: single address with name' => [
184
+ 'addrstr' => 'Joe User <joe@example.com>',
185
+ 'expected' => [
186
+ ['name' => 'Joe User', 'address' => 'joe@example.com'],
187
+ ],
188
+ ],
189
+ 'Valid address: single RFC2047 address folded onto multiple lines' => [
190
+ 'addrstr' => "=?ISO-8859-1?Q?J=F6rg?=\r\n" .
191
+ ' =?ISO-8859-1?Q?_M=FCller?= <xyz@example.com>',
192
+ 'expected' => [
193
+ ['name' => 'Jörg Müller', 'address' => 'xyz@example.com'],
194
+ ],
195
+ ],
196
+ 'Valid address: single RFC2047 address with space encoded as _' => [
197
+ 'addrstr' => '=?iso-8859-1?Q?Abcdefgh_ijklm=F1?= <xyz@example.com>',
198
+ 'expected' => [
199
+ ['name' => 'Abcdefgh ijklmñ', 'address' => 'xyz@example.com'],
200
+ ],
201
+ ],
202
+ 'Valid address: single address, quotes within name' => [
203
+ 'addrstr' => 'Tim "The Book" O\'Reilly <foo@example.com>',
204
+ 'expected' => [
205
+ ['name' => 'Tim The Book O\'Reilly', 'address' => 'foo@example.com'],
206
+ ],
207
+ ],
208
+ 'Valid address: two addresses with names' => [
209
+ 'addrstr' => 'Joe User <joe@example.com>, Jill User <jill@example.net>',
210
+ 'expected' => [
211
+ ['name' => 'Joe User', 'address' => 'joe@example.com'],
212
+ ['name' => 'Jill User', 'address' => 'jill@example.net'],
213
+ ],
214
+ ],
215
+ 'Valid address: two addresses with names, one without' => [
216
+ 'addrstr' => 'Joe User <joe@example.com>,'
217
+ . 'Jill User <jill@example.net>,'
218
+ . 'frank@example.com,',
219
+ 'expected' => [
220
+ ['name' => 'Joe User', 'address' => 'joe@example.com'],
221
+ ['name' => 'Jill User', 'address' => 'jill@example.net'],
222
+ ['name' => '', 'address' => 'frank@example.com'],
223
+ ],
224
+ ],
225
+ 'Valid address: multiple address, various formats, including one utf8-encoded names' => [
226
+ 'addrstr' => 'joe@example.com, <me@example.com>, Joe Doe <doe@example.com>,' .
227
+ ' "John O\'Groats" <johnog@example.net>,' .
228
+ ' =?utf-8?B?0J3QsNC30LLQsNC90LjQtSDRgtC10YHRgtCw?= <encoded@example.org>,' .
229
+ ' =?UTF-8?Q?Welcome_to_our_caf=C3=A9!?= =?ISO-8859-1?Q?_Willkommen_in_unserem_Caf=E9!?=' .
230
+ ' =?KOI8-R?Q?_=F0=D2=C9=D7=C5=D4_=D7_=CE=C1=DB=C5_=CB=C1=C6=C5!?= <encoded3@example.org>',
231
+ 'expected' => [
232
+ ['name' => '', 'address' => 'joe@example.com'],
233
+ ['name' => '', 'address' => 'me@example.com'],
234
+ ['name' => 'Joe Doe', 'address' => 'doe@example.com'],
235
+ ['name' => "John O'Groats", 'address' => 'johnog@example.net'],
236
+ ['name' => 'Название теста', 'address' => 'encoded@example.org'],
237
+ [
238
+ 'name' => 'Welcome to our café! Willkommen in unserem Café! Привет в наше кафе!',
239
+ 'address' => 'encoded3@example.org'
240
+ ],
241
+ ]
242
+ ],
243
+
244
+ // Test cases with invalid addresses.
245
+ 'Invalid address: single address, incomplete email' => [
246
+ 'addrstr' => 'Jill User <doug@>',
247
+ 'expected' => [],
248
+ ],
249
+ 'Invalid address: single address, invalid characters in email' => [
250
+ 'addrstr' => 'Joe User <{^c\@**Dog^}@cartoon.com>',
251
+ 'expected' => [],
252
+ ],
253
+ 'Invalid address: multiple addresses, invalid periods' => [
254
+ 'addrstr' => 'Joe User <joe@example.com.>, Jill User <jill.@example.net>',
255
+ 'expected' => [],
256
+ ],
257
+ ];
258
+ }
259
+
260
+ /**
261
+ * Test decodeHeader using the PHPMailer
262
+ * with the Mbstring extension available.
263
+ *
264
+ * @dataProvider dataDecodeHeader
265
+ * @covers \PHPMailer\PHPMailer\PHPMailer::decodeHeader
266
+ *
267
+ * @requires extension mbstring
268
+ *
269
+ * @param string $addrstr The header string.
270
+ * @param array $expected The expected function output.
271
+ */
272
+ public function testDecodeHeader($str, $expected)
273
+ {
274
+ $parsed = PHPMailer::decodeHeader($str, PHPMailer::CHARSET_UTF8);
275
+
276
+ $this->assertEquals($parsed, $expected);
277
+ }
278
+
279
+ /**
280
+ * Data provider for decodeHeader.
281
+ *
282
+ * @return array The array is expected to have an `addrstr` and an `expected` key.
283
+ * The `expected` key should - as a minimum - have a single value.
284
+ */
285
+ public function dataDecodeHeader()
286
+ {
287
+ return [
288
+ 'UTF-8 B-encoded' => [
289
+ 'name' => '=?utf-8?B?0J3QsNC30LLQsNC90LjQtSDRgtC10YHRgtCw?=',
290
+ 'expected' => 'Название теста',
291
+ ],
292
+ 'UTF-8 Q-encoded' => [
293
+ 'name' => '=?UTF-8?Q?=D0=9D=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8?=' .
294
+ ' =?UTF-8?Q?=D0=B5_=D1=82=D0=B5=D1=81=D1=82=D0=B0?=',
295
+ 'expected' => 'Название теста',
296
+ ],
297
+ 'UTF-8 Q-encoded with multiple wrong labels and space encoded as _' => [
298
+ 'name' => '=?UTF-8?Q?Welcome_to_our_caf=C3=A9!?= =?ISO-8859-1?Q?_Willkommen_in_unserem_Caf=E9!?=' .
299
+ ' =?KOI8-R?Q?_=F0=D2=C9=D7=C5=D4_=D7_=CE=C1=DB=C5_=CB=C1=C6=C5!?=',
300
+ 'expected' => 'Welcome to our café! Willkommen in unserem Café! Привет в наше кафе!',
301
+ ],
302
+ 'ISO-8859-1 Q-encoded' => [
303
+ 'name' => '=?ISO-8859-1?Q?Willkommen_in_unserem_Caf=E9!?=',
304
+ 'expected' => 'Willkommen in unserem Café!',
305
+ ],
306
+ 'Valid but wrongly labeled UTF-8 as ISO-8859-1' => [
307
+ 'name' => '=?iso-8859-1?B?5pyD6K2w5a6k?=',
308
+ 'expected' => "æ\xC2\x9C\xC2\x83議室",
309
+ ],
310
+ 'SMTPUTF8 encoded' => [
311
+ 'name' => '=?UTF-8?B?SGVsbG8g8J+MjSDkuJbnlYwgY2Fmw6k=?=',
312
+ 'expected' => 'Hello 🌍 世界 café',
313
+ ],
314
+ 'Multiple lines' => [
315
+ 'name' => '=?UTF-8?B?0YLQtdGB0YIg0YLQtdGB0YIg0YLQtdGB0YIg0YLQtdGB0YIg0YLQtdGB0YIg?='
316
+ . "\n =?UTF-8?B?0YLQtdGB0YIg0YLQtdGB0YI=?=",
317
+ 'expected' => 'тест тест тест тест тест тест тест',
318
+ ],
319
+ ];
320
+ }
321
+ }
@@ -0,0 +1,141 @@
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 IDN to ASCII functionality.
21
+ *
22
+ * @covers \PHPMailer\PHPMailer\PHPMailer::punyencodeAddress
23
+ */
24
+ final class PunyencodeAddressTest extends TestCase
25
+ {
26
+ /**
27
+ * Test IDN to ASCII form/punycode conversion for an email address.
28
+ *
29
+ * @requires extension mbstring
30
+ * @requires function idn_to_ascii
31
+ *
32
+ * @dataProvider dataPunyencodeAddressConversion
33
+ *
34
+ * @param string $input Input text string.
35
+ * @param string $charset The character set.
36
+ * @param string $expected Expected function output.
37
+ */
38
+ public function testPunyencodeAddressConversion($input, $charset, $expected)
39
+ {
40
+ $this->Mail->CharSet = $charset;
41
+
42
+ $input = html_entity_decode($input, ENT_COMPAT, $charset);
43
+ $expected = html_entity_decode($expected, ENT_COMPAT, $charset);
44
+
45
+ $result = $this->Mail->punyencodeAddress($input);
46
+ $this->assertSame($expected, $result);
47
+ }
48
+
49
+ /**
50
+ * Data provider.
51
+ *
52
+ * @return array
53
+ */
54
+ public function dataPunyencodeAddressConversion()
55
+ {
56
+ return [
57
+ // This source file is in UTF-8, so characters here are in native charset.
58
+ 'UTF8' => [
59
+ 'input' => 'test@fran&ccedil;ois.ch',
60
+ 'charset' => PHPMailer::CHARSET_UTF8,
61
+ 'expected' => 'test@xn--franois-xxa.ch',
62
+ ],
63
+ // To force working another charset, decode an ASCII string to avoid literal string charset issues.
64
+ 'ISO88591' => [
65
+ 'input' => 'test@fran&ccedil;ois.ch',
66
+ 'charset' => PHPMailer::CHARSET_ISO88591,
67
+ 'expected' => 'test@xn--franois-xxa.ch',
68
+ ],
69
+ 'Decode only domain' => [
70
+ 'input' => 'fran&ccedil;ois@fran&ccedil;ois.ch',
71
+ 'charset' => PHPMailer::CHARSET_UTF8,
72
+ 'expected' => 'fran&ccedil;ois@xn--franois-xxa.ch',
73
+ ],
74
+ 'IDN conversion flags' => [
75
+ 'input' => 'test@fußball.test',
76
+ 'charset' => PHPMailer::CHARSET_UTF8,
77
+ 'expected' => 'test@xn--fuball-cta.test',
78
+ ],
79
+ ];
80
+ }
81
+
82
+ /**
83
+ * Test IDN to ASCII form/punycode conversion returns the original value when no conversion
84
+ * is needed or when the requirements to convert an address have not been met.
85
+ *
86
+ * @dataProvider dataPunyencodeAddressNoConversion
87
+ *
88
+ * @param string $input Input text string.
89
+ * @param string $charset The character set.
90
+ * @param string $expected Expected function output.
91
+ */
92
+ public function testPunyencodeAddressNoConversion($input, $charset, $expected)
93
+ {
94
+ $this->Mail->CharSet = $charset;
95
+
96
+ // Prevent a warning about html_entity_decode() not supporting charset `us-ascii`.
97
+ if ($charset !== PHPMailer::CHARSET_ASCII) {
98
+ $input = html_entity_decode($input, ENT_COMPAT, $charset);
99
+ $expected = html_entity_decode($expected, ENT_COMPAT, $charset);
100
+ }
101
+
102
+ $result = $this->Mail->punyencodeAddress($input);
103
+ $this->assertSame($expected, $result);
104
+ }
105
+
106
+ /**
107
+ * Data provider.
108
+ *
109
+ * @return array
110
+ */
111
+ public function dataPunyencodeAddressNoConversion()
112
+ {
113
+ return [
114
+ 'ASCII' => [
115
+ 'input' => 'test@example.com',
116
+ 'charset' => PHPMailer::CHARSET_ASCII,
117
+ 'expected' => 'test@example.com',
118
+ ],
119
+ 'Invalid email address' => [
120
+ 'input' => 'fran&ccedil;ois@',
121
+ 'charset' => PHPMailer::CHARSET_UTF8,
122
+ 'expected' => 'fran&ccedil;ois@',
123
+ ],
124
+ 'Not an email address' => [
125
+ 'input' => 'testing 1-2-3',
126
+ 'charset' => PHPMailer::CHARSET_UTF8,
127
+ 'expected' => 'testing 1-2-3',
128
+ ],
129
+ 'Empty string' => [
130
+ 'input' => '',
131
+ 'charset' => PHPMailer::CHARSET_UTF8,
132
+ 'expected' => '',
133
+ ],
134
+ 'Empty charset' => [
135
+ 'input' => 'test@fran&ccedil;ois.ch',
136
+ 'charset' => '',
137
+ 'expected' => 'test@fran&ccedil;ois.ch',
138
+ ],
139
+ ];
140
+ }
141
+ }
@@ -0,0 +1,70 @@
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 Yoast\PHPUnitPolyfills\TestCases\TestCase;
18
+
19
+ /**
20
+ * Test quoted string functionality.
21
+ *
22
+ * @covers \PHPMailer\PHPMailer\PHPMailer::quotedString
23
+ */
24
+ final class QuotedStringTest extends TestCase
25
+ {
26
+ /**
27
+ * Test quoting of a string depending on the content of the string.
28
+ *
29
+ * @dataProvider dataQuotedString
30
+ *
31
+ * @param string $input Input text string.
32
+ * @param string $expected Expected function output.
33
+ */
34
+ public function testQuotedString($input, $expected)
35
+ {
36
+ $result = PHPMailer::quotedString($input);
37
+ self::assertSame($expected, $result);
38
+ }
39
+
40
+ /**
41
+ * Data provider.
42
+ *
43
+ * @return array
44
+ */
45
+ public function dataQuotedString()
46
+ {
47
+ return [
48
+ 'No special chars' => [
49
+ 'input' => 'phpmailer.png',
50
+ 'expected' => 'phpmailer.png',
51
+ ],
52
+ 'Text containing double quote char' => [
53
+ 'input' => 'phpmailer_mini".png',
54
+ 'expected' => '"phpmailer_mini\".png"',
55
+ ],
56
+ 'Text containing pre-escaped double quote char' => [
57
+ 'input' => 'phpmailer_mini\".png',
58
+ 'expected' => '"phpmailer_mini\\\".png"',
59
+ ],
60
+ 'Text containing spaces' => [
61
+ 'input' => 'PHPMailer card logo.png',
62
+ 'expected' => '"PHPMailer card logo.png"',
63
+ ],
64
+ 'Text containing variety of "special" chars' => [
65
+ 'input' => 'php@ma;ler=m:ni,p<g>?q=[foo]',
66
+ 'expected' => '"php@ma;ler=m:ni,p<g>?q=[foo]"',
67
+ ],
68
+ ];
69
+ }
70
+ }