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,285 @@
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\Exception;
17
+ use PHPMailer\PHPMailer\PHPMailer;
18
+ use PHPMailer\Test\TestCase;
19
+
20
+ /**
21
+ * Test custom header functionality.
22
+ */
23
+ final class CustomHeaderTest extends TestCase
24
+ {
25
+ /**
26
+ * Tests setting and getting custom headers.
27
+ *
28
+ * @covers \PHPMailer\PHPMailer\PHPMailer::addCustomHeader
29
+ * @covers \PHPMailer\PHPMailer\PHPMailer::getCustomHeaders
30
+ *
31
+ * @dataProvider dataAddAndGetCustomHeader
32
+ *
33
+ * @param array $headers Array of headers to set.
34
+ * @param array|null $expected Optional. The expected set headers.
35
+ * Only needs to be passed if different from the $headers array.
36
+ */
37
+ public function testAddAndGetCustomHeader($headers, $expected = null)
38
+ {
39
+ if (isset($expected) === false) {
40
+ $expected = $headers;
41
+ }
42
+
43
+ // Test setting the custom header(s).
44
+ foreach ($headers as $header) {
45
+ if (isset($header[1])) {
46
+ $set = $this->Mail->addCustomHeader($header[0], $header[1]);
47
+ } else {
48
+ $set = $this->Mail->addCustomHeader($header[0]);
49
+ }
50
+
51
+ self::assertTrue($set, 'Custom header failed to set for ' . var_export($header, true));
52
+ }
53
+
54
+ // Test retrieving the custom header(s) and verify they have been correctly set.
55
+ self::assertSame(
56
+ $expected,
57
+ $this->Mail->getCustomHeaders(),
58
+ 'Custom headers retrieved not the same as expected'
59
+ );
60
+ }
61
+
62
+ /**
63
+ * Data provider.
64
+ *
65
+ * @return array
66
+ */
67
+ public function dataAddAndGetCustomHeader()
68
+ {
69
+ return [
70
+ 'Single custom header' => [
71
+ 'headers' => [
72
+ ['foo', 'bar'],
73
+ ],
74
+ ],
75
+ 'Multiple custom headers' => [
76
+ 'headers' => [
77
+ ['foo', 'bar'],
78
+ ['foo', 'baz'],
79
+ ],
80
+ ],
81
+ 'Custom header: only name, no colon' => [
82
+ 'headers' => [
83
+ ['yux'],
84
+ ],
85
+ 'expected' => [
86
+ ['yux', ''],
87
+ ],
88
+ ],
89
+ 'Custom header: whitespace around name and value' => [
90
+ 'headers' => [
91
+ [' name ', ' value '],
92
+ ],
93
+ 'expected' => [
94
+ ['name', 'value'],
95
+ ],
96
+ ],
97
+ 'Custom headers: "name: value" sets' => [
98
+ 'headers' => [
99
+ ['Content-Type: application/json'],
100
+ ['SomeHeader: Some Value'],
101
+ ],
102
+ 'expected' => [
103
+ ['Content-Type', 'application/json'],
104
+ ['SomeHeader', 'Some Value'],
105
+ ],
106
+ ],
107
+ 'Custom headers: "name:value" sets, no space and lots of space' => [
108
+ 'headers' => [
109
+ ['Content-Type:application/json'],
110
+ ['SomeHeader : Some Value'],
111
+ ],
112
+ 'expected' => [
113
+ ['Content-Type', 'application/json'],
114
+ ['SomeHeader', 'Some Value'],
115
+ ],
116
+ ],
117
+ 'Custom headers: "name: value" set with a colon in the value' => [
118
+ 'headers' => [
119
+ ['name: value:value'],
120
+ ],
121
+ 'expected' => [
122
+ ['name', 'value:value'],
123
+ ],
124
+ ],
125
+ 'Custom headers: "name: value" set without a value' => [
126
+ 'headers' => [
127
+ ['name:'],
128
+ ],
129
+ 'expected' => [
130
+ ['name', ''],
131
+ ],
132
+ ],
133
+ 'Custom header: "name: value" set with whitespace around name and value' => [
134
+ 'headers' => [
135
+ [' name : value '],
136
+ ],
137
+ 'expected' => [
138
+ ['name', 'value'],
139
+ ],
140
+ ],
141
+ 'Custom headers: duplicate headers' => [
142
+ 'headers' => [
143
+ ['SomeHeader: Some Value'],
144
+ ['SomeHeader', 'Some Value']
145
+ ],
146
+ 'expected' => [
147
+ ['SomeHeader', 'Some Value'],
148
+ ['SomeHeader', 'Some Value'],
149
+ ],
150
+ ],
151
+ ];
152
+ }
153
+
154
+ /**
155
+ * Tests failing to set custom headers when the header info provided does not validate.
156
+ *
157
+ * @covers \PHPMailer\PHPMailer\PHPMailer::addCustomHeader
158
+ * @dataProvider dataAddCustomHeaderInvalid
159
+ *
160
+ * @param string $name Custom header name.
161
+ * @param mixed $value Optional. Custom header value.
162
+ */
163
+ public function testAddCustomHeaderInvalid($name, $value = null)
164
+ {
165
+ self::assertFalse($this->Mail->addCustomHeader($name, $value));
166
+ }
167
+
168
+ /**
169
+ * Data provider.
170
+ *
171
+ * @return array
172
+ */
173
+ public function dataAddCustomHeaderInvalid()
174
+ {
175
+ return [
176
+ 'Invalid: new line in value' => [
177
+ 'name' => 'SomeHeader',
178
+ 'value' => "Some\n Value",
179
+ ],
180
+ 'Invalid: new line in name' => [
181
+ 'name' => "Some\nHeader",
182
+ 'value' => 'Some Value',
183
+ ],
184
+ 'Invalid: empty name' => [
185
+ 'name' => ' ',
186
+ ],
187
+ 'Invalid: empty name and empty value' => [
188
+ 'name' => ' : ',
189
+ ],
190
+ ];
191
+ }
192
+
193
+ /**
194
+ * Test removing previously set custom header.
195
+ *
196
+ * @covers \PHPMailer\PHPMailer\PHPMailer::clearCustomHeader
197
+ */
198
+ public function testClearCustomHeader()
199
+ {
200
+ // make sure 'foo' is cleared, even if there is more than one header set.
201
+ $this->Mail->addCustomHeader('foo', 'bar');
202
+ $this->Mail->addCustomHeader('foo', 'baz');
203
+ self::assertSame([['foo', 'bar'], ['foo', 'baz']], $this->Mail->getCustomHeaders());
204
+
205
+ $this->Mail->clearCustomHeader('foo');
206
+
207
+ $cleared = $this->Mail->getCustomHeaders();
208
+ self::assertIsArray($cleared);
209
+ self::assertEmpty($cleared);
210
+ }
211
+
212
+ /**
213
+ * Test removing previously set custom header value.
214
+ *
215
+ * @covers \PHPMailer\PHPMailer\PHPMailer::clearCustomHeader
216
+ */
217
+ public function testClearCustomHeaderValue()
218
+ {
219
+ // Test clearing 'name', 'value'
220
+ $this->Mail->addCustomHeader('foo', 'bar');
221
+ $this->Mail->addCustomHeader('foo', 'baz');
222
+ self::assertSame([['foo', 'bar'], ['foo', 'baz']], $this->Mail->getCustomHeaders());
223
+
224
+ $this->Mail->clearCustomHeader('foo', 'bar');
225
+ self::assertSame([['foo', 'baz']], array_values($this->Mail->getCustomHeaders()));
226
+
227
+ // Test clearing 'name: value'
228
+ $this->Mail->addCustomHeader('foo', 'bar');
229
+ self::assertSame([['foo', 'baz'], ['foo', 'bar']], array_values($this->Mail->getCustomHeaders()));
230
+
231
+ $this->Mail->clearCustomHeader('foo: bar');
232
+ self::assertSame([['foo', 'baz']], array_values($this->Mail->getCustomHeaders()));
233
+ }
234
+
235
+ /**
236
+ * Test removing previously set custom headers.
237
+ *
238
+ * @covers \PHPMailer\PHPMailer\PHPMailer::clearCustomHeaders
239
+ */
240
+ public function testClearCustomHeaders()
241
+ {
242
+ $this->Mail->addCustomHeader('foo', 'bar');
243
+ self::assertSame([['foo', 'bar']], $this->Mail->getCustomHeaders());
244
+
245
+ $this->Mail->clearCustomHeaders();
246
+
247
+ $cleared = $this->Mail->getCustomHeaders();
248
+ self::assertIsArray($cleared);
249
+ self::assertEmpty($cleared);
250
+ }
251
+
252
+ /**
253
+ * Check whether setting a bad custom header throws exceptions.
254
+ *
255
+ * @covers \PHPMailer\PHPMailer\PHPMailer::addCustomHeader
256
+ *
257
+ * @throws Exception
258
+ */
259
+ public function testInvalidHeaderException()
260
+ {
261
+ $this->expectException(Exception::class);
262
+ $this->expectExceptionMessage('Invalid header name or value');
263
+
264
+ $mail = new PHPMailer(true);
265
+ $mail->addCustomHeader('SomeHeader', "Some\n Value");
266
+ }
267
+
268
+ /**
269
+ * Test replacing a previously set custom header.
270
+ *
271
+ * @covers \PHPMailer\PHPMailer\PHPMailer::replaceCustomHeader
272
+ */
273
+ public function testReplaceCustomHeader()
274
+ {
275
+ $this->Mail->addCustomHeader('foo', 'bar');
276
+ $this->Mail->replaceCustomHeader('foo', 'baz');
277
+
278
+ // Test retrieving the custom header(s) and verify the updated value is seet.
279
+ self::assertSame(
280
+ [['foo', 'baz']],
281
+ $this->Mail->getCustomHeaders(),
282
+ 'Custom header does not contain expected update'
283
+ );
284
+ }
285
+ }
@@ -0,0 +1,258 @@
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\Exception;
17
+ use PHPMailer\Test\SendTestCase;
18
+
19
+ /**
20
+ * Test DKIM signing functionality.
21
+ *
22
+ * @group dkim
23
+ */
24
+ final class DKIMTest extends SendTestCase
25
+ {
26
+ /**
27
+ * Whether or not to initialize the PHPMailer object to throw exceptions.
28
+ *
29
+ * @var bool|null
30
+ */
31
+ const USE_EXCEPTIONS = true;
32
+
33
+ const PRIVATE_KEY_FILE = 'dkim_private.pem';
34
+
35
+ /**
36
+ * Run after each test is completed.
37
+ */
38
+ protected function tear_down()
39
+ {
40
+ if (file_exists(self::PRIVATE_KEY_FILE)) {
41
+ unlink(self::PRIVATE_KEY_FILE);
42
+ }
43
+
44
+ parent::tear_down();
45
+ }
46
+
47
+ /**
48
+ * DKIM body canonicalization tests.
49
+ *
50
+ * @link https://www.rfc-editor.org/rfc/rfc6376.html#section-3.4.4
51
+ *
52
+ * @covers \PHPMailer\PHPMailer\PHPMailer::DKIM_BodyC
53
+ */
54
+ public function testDKIMBodyCanonicalization()
55
+ {
56
+ // Example from https://www.rfc-editor.org/rfc/rfc6376.html#section-3.4.5.
57
+ $prebody = " C \r\nD \t E\r\n\r\n\r\n";
58
+ $postbody = " C \r\nD \t E\r\n";
59
+
60
+ self::assertSame(
61
+ "\r\n",
62
+ $this->Mail->DKIM_BodyC(''),
63
+ 'DKIM empty body canonicalization incorrect (Empty body)'
64
+ );
65
+ self::assertSame(
66
+ 'frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN/XKdLCPjaYaY=',
67
+ base64_encode(hash('sha256', $this->Mail->DKIM_BodyC(''), true)),
68
+ 'DKIM canonicalized empty body hash mismatch'
69
+ );
70
+ self::assertSame($postbody, $this->Mail->DKIM_BodyC($prebody), 'DKIM body canonicalization incorrect');
71
+
72
+ //Ensure that non-break trailing whitespace in the body is preserved
73
+ $prebody = " C \r\nD \t E \r\n\r\n\r\n";
74
+ $postbody = " C \r\nD \t E \r\n";
75
+ self::assertSame(
76
+ $postbody,
77
+ $this->Mail->DKIM_BodyC($prebody),
78
+ 'DKIM body canonicalization incorrect (trailing WSP)'
79
+ );
80
+ }
81
+
82
+ /**
83
+ * DKIM header canonicalization tests.
84
+ *
85
+ * @link https://www.rfc-editor.org/rfc/rfc6376.html#section-3.4.2
86
+ *
87
+ * @covers \PHPMailer\PHPMailer\PHPMailer::DKIM_HeaderC
88
+ */
89
+ public function testDKIMHeaderCanonicalization()
90
+ {
91
+ // Example from https://www.rfc-editor.org/rfc/rfc6376.html#section-3.4.5.
92
+ $preheaders = "A: X\r\nB : Y\t\r\n\tZ \r\n";
93
+ $postheaders = "a:X\r\nb:Y Z\r\n";
94
+ self::assertSame(
95
+ $postheaders,
96
+ $this->Mail->DKIM_HeaderC($preheaders),
97
+ 'DKIM header canonicalization incorrect'
98
+ );
99
+
100
+ // Check that long folded lines with runs of spaces are canonicalized properly.
101
+ $preheaders = 'Long-Header-1: <https://example.com/somescript.php?' .
102
+ "id=1234567890&name=Abcdefghijklmnopquestuvwxyz&hash=\r\n abc1234\r\n" .
103
+ "Long-Header-2: This is a long header value that contains runs of spaces and trailing \r\n" .
104
+ ' and is folded onto 2 lines';
105
+ $postheaders = 'long-header-1:<https://example.com/somescript.php?id=1234567890&' .
106
+ "name=Abcdefghijklmnopquestuvwxyz&hash= abc1234\r\nlong-header-2:This is a long" .
107
+ ' header value that contains runs of spaces and trailing and is folded onto 2 lines';
108
+ self::assertSame(
109
+ $postheaders,
110
+ $this->Mail->DKIM_HeaderC($preheaders),
111
+ 'DKIM header canonicalization of long lines incorrect'
112
+ );
113
+ }
114
+
115
+ /**
116
+ * DKIM copied header fields tests.
117
+ *
118
+ * @link https://www.rfc-editor.org/rfc/rfc6376.html#section-3.5
119
+ *
120
+ * @requires extension openssl
121
+ *
122
+ * @covers \PHPMailer\PHPMailer\PHPMailer::DKIM_Add
123
+ * @covers \PHPMailer\PHPMailer\PHPMailer::DKIM_Sign
124
+ * @covers \PHPMailer\PHPMailer\PHPMailer::DKIM_QP
125
+ */
126
+ public function testDKIMOptionalHeaderFieldsCopy()
127
+ {
128
+ $pk = openssl_pkey_new(
129
+ [
130
+ 'private_key_bits' => 2048,
131
+ 'private_key_type' => OPENSSL_KEYTYPE_RSA,
132
+ ]
133
+ );
134
+ openssl_pkey_export_to_file($pk, self::PRIVATE_KEY_FILE);
135
+ $this->Mail->DKIM_private = self::PRIVATE_KEY_FILE;
136
+
137
+ // Example from https://www.rfc-editor.org/rfc/rfc6376.html#section-3.5.
138
+ $from = 'from@example.com';
139
+ $to = 'to@example.com';
140
+ $date = 'date';
141
+ $subject = 'example';
142
+
143
+ $headerLines = "From:$from\r\nTo:$to\r\nDate:$date\r\n";
144
+ $copyHeaderFields = " z=From:$from\r\n |To:$to\r\n |Date:$date\r\n |Subject:$subject;\r\n";
145
+
146
+ $this->Mail->DKIM_copyHeaderFields = true;
147
+ self::assertStringContainsString(
148
+ $copyHeaderFields,
149
+ $this->Mail->DKIM_Add($headerLines, $subject, ''),
150
+ 'DKIM header with copied header fields incorrect'
151
+ );
152
+
153
+ $this->Mail->DKIM_copyHeaderFields = false;
154
+ self::assertStringNotContainsString(
155
+ $copyHeaderFields,
156
+ $this->Mail->DKIM_Add($headerLines, $subject, ''),
157
+ 'DKIM header without copied header fields incorrect'
158
+ );
159
+ }
160
+
161
+ /**
162
+ * DKIM signing extra headers tests.
163
+ *
164
+ * @requires extension openssl
165
+ *
166
+ * @covers \PHPMailer\PHPMailer\PHPMailer::DKIM_Add
167
+ * @covers \PHPMailer\PHPMailer\PHPMailer::DKIM_Sign
168
+ * @covers \PHPMailer\PHPMailer\PHPMailer::DKIM_QP
169
+ */
170
+ public function testDKIMExtraHeaders()
171
+ {
172
+ $pk = openssl_pkey_new(
173
+ [
174
+ 'private_key_bits' => 2048,
175
+ 'private_key_type' => OPENSSL_KEYTYPE_RSA,
176
+ ]
177
+ );
178
+ openssl_pkey_export_to_file($pk, self::PRIVATE_KEY_FILE);
179
+ $this->Mail->DKIM_private = self::PRIVATE_KEY_FILE;
180
+
181
+ // Example from https://www.rfc-editor.org/rfc/rfc6376.html#section-3.5.
182
+ $from = 'from@example.com';
183
+ $to = 'to@example.com';
184
+ $date = 'date';
185
+ $subject = 'example';
186
+ $anyHeader = 'foo';
187
+ $unsubscribeUrl = '<https://www.example.com/unsubscribe/?newsletterId=anytoken&amp;actionToken=anyToken' .
188
+ '&otherParam=otherValue&anotherParam=anotherVeryVeryVeryLongValue>';
189
+
190
+ $this->Mail->addCustomHeader('X-AnyHeader', $anyHeader);
191
+ $this->Mail->addCustomHeader('Baz', 'bar');
192
+ $this->Mail->addCustomHeader('List-Unsubscribe', $unsubscribeUrl);
193
+
194
+ $this->Mail->DKIM_extraHeaders = ['Baz', 'List-Unsubscribe'];
195
+
196
+ $headerLines = "From:$from\r\nTo:$to\r\nDate:$date\r\n";
197
+ $headerLines .= "X-AnyHeader:$anyHeader\r\nBaz:bar\r\n";
198
+ $headerLines .= 'List-Unsubscribe:' . $this->Mail->encodeHeader($unsubscribeUrl) . "\r\n";
199
+
200
+ $headerFields = 'h=From:To:Date:Baz:List-Unsubscribe:Subject';
201
+
202
+ $result = $this->Mail->DKIM_Add($headerLines, $subject, '');
203
+
204
+ self::assertStringContainsString($headerFields, $result, 'DKIM header with extra headers incorrect');
205
+ }
206
+
207
+ /**
208
+ * DKIM Signing tests.
209
+ *
210
+ * @requires extension openssl
211
+ *
212
+ * @covers \PHPMailer\PHPMailer\PHPMailer::DKIM_Add
213
+ * @covers \PHPMailer\PHPMailer\PHPMailer::DKIM_Sign
214
+ * @covers \PHPMailer\PHPMailer\PHPMailer::DKIM_QP
215
+ */
216
+ public function testDKIMSigningMail()
217
+ {
218
+ $this->Mail->Subject .= ': DKIM signing';
219
+ $this->Mail->Body = 'This message is DKIM signed.';
220
+ $this->buildBody();
221
+
222
+ // Make a new key pair.
223
+ // Note: 2048 bits is the recommended minimum key length - gmail won't accept less than 1024 bits.
224
+ $pk = openssl_pkey_new(
225
+ [
226
+ 'private_key_bits' => 2048,
227
+ 'private_key_type' => OPENSSL_KEYTYPE_RSA,
228
+ ]
229
+ );
230
+ openssl_pkey_export_to_file($pk, self::PRIVATE_KEY_FILE);
231
+
232
+ $this->Mail->DKIM_domain = 'example.com';
233
+ $this->Mail->DKIM_private = self::PRIVATE_KEY_FILE;
234
+ $this->Mail->DKIM_selector = 'phpmailer';
235
+ $this->Mail->DKIM_passphrase = ''; //key is not encrypted
236
+ self::assertTrue($this->Mail->send(), 'DKIM signed mail failed');
237
+
238
+ $this->Mail->isMail();
239
+ self::assertTrue($this->Mail->send(), 'DKIM signed mail via mail() failed');
240
+ }
241
+
242
+ /**
243
+ * Verify behaviour of the DKIM_Sign method when Open SSL is not available and exceptions is enabled.
244
+ *
245
+ * @covers \PHPMailer\PHPMailer\PHPMailer::DKIM_Sign
246
+ */
247
+ public function testDKIMSignOpenSSLNotAvailableException()
248
+ {
249
+ if (extension_loaded('openssl')) {
250
+ self::markTestSkipped('Test requires OpenSSL *not* to be available');
251
+ }
252
+
253
+ $this->expectException(Exception::class);
254
+ $this->expectExceptionMessage('Extension missing: openssl');
255
+
256
+ $this->Mail->DKIM_Sign('foo');
257
+ }
258
+ }
@@ -0,0 +1,46 @@
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\TestCase;
17
+
18
+ /**
19
+ * Test DKIM signing functionality.
20
+ *
21
+ * @group dkim
22
+ */
23
+ final class DKIMWithoutExceptionsTest extends TestCase
24
+ {
25
+ /**
26
+ * Whether or not to initialize the PHPMailer object to throw exceptions.
27
+ *
28
+ * @var bool|null
29
+ */
30
+ const USE_EXCEPTIONS = false;
31
+
32
+ /**
33
+ * Verify behaviour of the DKIM_Sign method when Open SSL is not available and exceptions is disabled.
34
+ *
35
+ * @covers \PHPMailer\PHPMailer\PHPMailer::DKIM_Sign
36
+ */
37
+ public function testDKIMSignOpenSSLNotAvailable()
38
+ {
39
+ if (extension_loaded('openssl')) {
40
+ self::markTestSkipped('Test requires OpenSSL *not* to be available');
41
+ }
42
+
43
+ $signature = $this->Mail->DKIM_Sign('foo');
44
+ self::assertSame('', $signature);
45
+ }
46
+ }