nomadcode/simple-mailform

简单的单页邮件表单工具

dev-master 2020-03-11 10:37 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:14:37 UTC


README

这是一个最小化实现的邮件表单工具,旨在用于为简单网站提供联系表单。

安装

composer require nomadcode/simple-mailform

使用方法

要使用邮件表单,请将一个 Nomadcode\Component\Mailform\Mailform 对象添加到您的页面中,然后调用对象的 process() 方法。

该对象使用三个参数初始化。第一个是设置对象,包含脚本的配置信息。第二个是显示在表单中的问候信息。第三个是表单信息区域中显示的文本行数。所有三个参数都是可选的,尽管强烈建议您传递一个设置对象以配置表单。

设置对象将包含以下条目

salt 设置应该是一个(非常)复杂的字符串。如果您不确定要放什么,可以使用 WordPress 的便捷的 salt 生成器 的值。

消息将发送到 recipient,并且消息的主题行将以 prefix 为前缀。日志活动将记录在 log 的日志文件中(请确保日志文件存在,并且可以被您的 Web 服务器写入)。如果您想跟踪通过邮件表单发送垃圾邮件的尝试,还可以指定 checksum_failure_log 的路径。

如果 placeholderstrue,则表单中的消息字段将使用 HTML5 占位符。此选项默认关闭,因为研究表明用户可能会发现占位符令人困惑。

capture_dump_file 设置用于调试目的。如果将其设置为文件路径,则在发送消息之前将消息的内容写入文本文件。这提供了即使消息从未发送也能记录消息的记录。默认情况下,此设置未启用。

示例

// settings.php

$settings = [
	'mailform' => [
		'salt' => 'someverycomplicatedstring',
		'recipient' => 'user@example.com',
		'prefix' => 'My Website',
		'log' => $_SERVER['DOCUMENT_ROOT'] . "/../logs/mailform.log",
		'checksum_failure_log' => $_SERVER['DOCUMENT_ROOT'] . '/../logs/rejection.log',
		'hash_algorithm' => 'sha256',
		'placeholders' => true,
		'capture_dump_file' => $_SERVER['DOCUMENT_ROOT'] . "/../logs/mailform-dumps.txt"
	]
];
// mywebpage.html

	include('settings.php');
	require __DIR__ . '/../phplib/autoload.php';
	$greeting = <<<EndOfText
Please fill in the form below to send me email.
EndOfText;
	$form = new Nomadcode\Component\Mailform\Mailform($settings["mailform"],
													  $greeting,
													  5);
	$form->process();

备注

组件实现了一个用于发送邮件的多步骤过程。每个步骤都使用相同的网页,但根据交互状态的不同,组件会生成不同的内容。

在第一步中,组件创建了一个简单的 HTML5 表单,允许访客输入他们的姓名、电子邮件地址、主题和消息。在第二步中,将消息显示给他们以供确认。在第三步中,发送消息,并显示确认消息以指示成功或失败。

组件实现了一种基本的反垃圾邮件技术。用户提交的消息将使用设置文件中定义的密钥盐进行哈希。在第三步中,将哈希与消息一起传递。如果传递的哈希与消息内容不匹配,则拒绝提交。

这只能提供基本的防御。如果对手知道这种技术,他们可以修改他们的垃圾邮件机器人来处理多步骤提交,通过模仿真实用户来绕过安全措施。然而,并非所有垃圾邮件机器人都是设计来应对单步提交的,点击邮件表单上的“提交”按钮会导致消息立即发送。很可能大多数垃圾邮件机器人无法识别,为了使消息提交,还需要进行额外的操作——在第二页上点击“提交”按钮。

这种方法可能比CAPTCHA稍微不那么侵入性。在用户发送消息之前让他们有机会查看他们的消息也不是坏事,因为这可能会减少不完整或不经考虑的消息提交数量。

测试

./vendor/bin/phpunit

已知问题

变更日志

0.2.0 首次公开发布

0.2.1 修复“发件人”行的小错误

0.2.2 支持调试

0.3.0 新增功能和改进