如何使用 PHP mail() 函数发送电子邮件
什么是 PHP 邮件?
PHP 邮件是内置的 PHP 函数,用于从 PHP 脚本发送电子邮件。
mail 函数接受以下参数:
- 邮箱
- 咨询内容
- 留言信息
- 抄送或公证电子邮件地址
- 这是向用户通知重要事件的一种经济有效的方式。
- 通过在网站上提供联系我们表格并通过电子邮件发送所提供内容,让用户通过电子邮件与您联系。
- 开发人员可以使用它来通过电子邮件接收系统错误
- 您可以使用它向您的新闻通讯订阅者发送电子邮件。
- 您可以使用它向忘记密码的用户发送密码重置链接
- 您可以使用它来通过电子邮件发送激活/确认链接。这在注册用户和验证其电子邮件地址时非常有用
为什么/何时使用邮件 PHP
使用 PHP 发送邮件
PHP mail 函数的基本语法如下
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
这里,
- “$to_email_address” 是邮件收件人的电子邮件地址
- “$subject” 是电子邮件主题
- “$message” 是要发送的消息。
- “[$headers]” 是可选的,它可以用来包含诸如 CC、BCC 等信息
- CC 是抄送 (Carbon Copy) 的缩写。当您想将副本发送给感兴趣的人时,可以使用该词。例如,发送给公司的投诉电子邮件也可以作为抄送发送给投诉委员会。
- BCC 是密件抄送的缩写。它与 CC 类似。BCC 部分中包含的电子邮件地址不会显示给其他收件人。
简易 Mail Transmission 协议 (SMTP)
PHP 邮件程序使用 Simple Mail Transmission 协议(SMTP)发送邮件。
在托管服务器上,SMTP 设置已经设置完毕。
可以从 PHP 安装文件夹中的“php.ini”文件配置 SMTP 邮件设置。
在本地主机上配置 SMTP 设置假设您在 Windows 上使用 xampp,请在目录“C:\xampp\php”中找到“php.ini”。
- 使用记事本或任何文本编辑器打开它。我们将在本例中使用记事本。单击编辑菜单
- 点击查找…菜单
- 将出现查找对话框菜单
- 点击查找下一个按钮
- 找到条目
- 【邮件功能】
- ;XAMPP: 如果你想要使用 SMTP 服务器,请不要删除半列 Mercury
- ;SMTP = 本地主机
- ;smtp_端口 = 25
- 删除 SMTP 和 smtp_port 前面的分号,并将 SMTP 设置为您的 smtp服务器 并将端口设置为您的 smtp 端口。您的设置应如下所示
- SMTP = smtp.example.com
- SMTP 端口 = 25
- 备注 您可以从您的网络托管服务提供商处获取 SMTP 设置。
- 如果服务器需要身份验证,则添加以下行。
- auth_username = example_username@example.com
- auth_password = 示例密码
- 保存新的更改。
- 重新启动 阿帕奇 服务器。
PHP Mail 例如:
现在让我们看一个发送简单邮件的例子。
<?php $to_email = 'name @ company . com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply @ company . com'; mail($to_email,$subject,$message,$headers); ?>
输出:
请注意: 上面的例子只采用了 4 个必需参数。
您应该用真实的电子邮件地址替换上述虚构的电子邮件地址。
净化电子邮件用户输入
为了简单起见,上面的示例在源代码中使用了电子邮件地址和其他详细信息的硬编码值。
假设您必须创建一个联系我们表格,供用户填写详细信息然后提交。
- 用户可能会意外或故意在邮件头中注入代码,从而导致发送垃圾邮件
- 为了保护您的系统免受此类攻击,您可以创建一个自定义函数,在发送邮件之前清理并验证这些值。
让我们创建一个自定义函数,使用内置函数 filter_var 来验证和清理电子邮件地址。
Filter_var 函数 filter_var 函数用于清理和验证用户输入数据。
它具有以下基本语法。
<?php filter_var($field, SANITIZATION TYPE); ?>
这里,
- “filter_var(…)” 是验证和清理函数
- “$field”是需要过滤的字段的值。
- “消毒类型”是指在现场进行的消毒类型,例如;
- 筛选器验证电子邮件 – 如果电子邮件地址有效,则返回 true;如果电子邮件地址无效,则返回 false。
- 过滤电子邮件 – 它从电子邮件地址中删除非法字符。info\@domain.(com) 返回 info@domain.com。
- FILTER_SANITIZE_URL – 它从 URL 中删除非法字符。http://www.example@.comé 返回 >http://www.example@.com
- 过滤器清理字符串 – 它从字符串值中删除标签。am bold变成 am bold。
下面的代码实现了使用自定义函数发送安全邮件。
<?php function sanitize_my_email($field) { $field = filter_var($field, FILTER_SANITIZE_EMAIL); if (filter_var($field, FILTER_VALIDATE_EMAIL)) { return true; } else { return false; } } $to_email = 'name @ company . com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail '; $headers = 'From: noreply @ company. com'; //check if the email address is invalid $secure_check $secure_check = sanitize_my_email($to_email); if ($secure_check == false) { echo "Invalid input"; } else { //send email mail($to_email, $subject, $message, $headers); echo "This email is sent using PHP Mail"; } ?>
输出:
安全 Mail
电子邮件在传输过程中可能会被非预期的收件人拦截。
这可能会将电子邮件的内容暴露给非预期的收件人。
安全邮件通过安全超文本传输协议 (HTTPS) 传输电子邮件解决了这个问题。
HTTPS 在发送消息之前对其进行加密。
总结
- - PHP 内置函数 mail() 用于从 PHP 脚本发送邮件
- 对数据进行验证和清理检查对于发送安全邮件至关重要
- PHP 内置函数 filter_var() 提供了一种易于使用且有效的方法来执行数据清理和验证