PHP学习(9)-Email
来源:互联网 发布:栅格数据是什么意思 编辑:程序博客网 时间:2024/06/11 13:50
1.mail() 函数
PHP mail() 函数用于从脚本中发送电子邮件。
语法:mail(to,subject,message,headers,parameters)
参数 :
to 必需。规定 email 接收者。
subject 必需。规定 email 的主题。注释:该参数不能包含任何新行字符。
message 必需。定义要发送的消息。应使用 LF (\n) 来分隔各行。
headers 可选。规定附加的标题,比如 From、Cc 以及 Bcc。应当使用 CRLF (\r\n) 分隔附加的标题。
parameters 可选。对邮件发送程序规定额外的参数。
注释:PHP 需要一个已安装且正在运行的邮件系统,以便使邮件函数可用。所用的程序通过在 php.ini 文件中的配置设置进行定义。可参考:http://www.w3school.com.cn/php/php_ref_mail.asp。
运行时配置
邮件函数的行为受 php.ini 的影响。
Mail 配置选项
名称 默认 描述 可更改
SMTP "localhost" Windows 专用:SMTP 服务器的 DNS 名称或 IP 地址。 PHP_INI_ALLsmtp_port "25" Windows 专用:SMTP 端口号。自 PHP 4.3 起可用。 PHP_INI_ALLsendmail_from NULL Windows 专用:规定从 PHP 发送的邮件中使用的 "from" 地址。 PHP_INI_ALLsendmail_path NULL Unix 系统专用:规定sendmail 程序的路径(通常 /usr/sbin/sendmail 或 /usr/lib/sendmail) PHP_INI_SYSTEM
2.简易 E-Mail
通过 PHP 发送电子邮件的最简单的方式是发送一封文本 email。
在下面的例子中,我们首先声明变量(
<?php$to = "someone@example.com";$subject = "Test mail";$message = "Hello! This is a simple email message.";$from = "someonelse@example.com";$headers = "From: $from";mail($to,$subject,$message,$headers);echo "Mail Sent.";?>
3.Mail Form
通过 PHP,您能够在自己的站点制作一个反馈表单。下面的例子向指定的 e-mail 地址发送了一条文本消息:
<html><body><?phpif (isset($_REQUEST['email']))//if "email" is filled out, send email { //send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail( "someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; }else//if "email" is not filled out, display the form { echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; }?></body></html>
例子解释:
首先,检查是否填写了邮件输入框
如果未填写(比如在页面被首次访问时),输出 HTML 表单
如果已填写(在表单被填写后),从表单发送邮件
当点击提交按钮后,重新载入页面,显示邮件发送成功的消息
4.E-mail 注入
在3.的例子中,未经授权的用户可通过输入表单在邮件头部插入数据。
假如用户在表单中的输入框内加入这些文本,会出现什么情况呢?
someone@example.com%0ACc:person2@example.com%0ABcc:person3@example.com,person3@example.com,anotherperson4@example.com,person5@example.com%0ABTo:person6@example.com
与往常一样,mail() 函数把上面的文本放入邮件头部,那么现在头部有了额外的 Cc:, Bcc: 以及 To: 字段。当用户点击提交按钮时,这封 e-mail 会被发送到上面所有的地址!
防止 E-mail 注入
防止 e-mail 注入的最好方法是对输入进行验证。
下面的代码与上一节类似,不过我们已经增加了检测表单中 email 字段的输入验证程序:
<html><body><?phpfunction spamcheck($field) { //filter_var() sanitizes the e-mail //address using FILTER_SANITIZE_EMAIL $field=filter_var($field, FILTER_SANITIZE_EMAIL); //filter_var() validates the e-mail //address using FILTER_VALIDATE_EMAIL if(filter_var($field, FILTER_VALIDATE_EMAIL)) { return TRUE; } else { return FALSE; } }if (isset($_REQUEST['email'])) {//if "email" is filled out, proceed //check if the email address is invalid $mailcheck = spamcheck($_REQUEST['email']); if ($mailcheck==FALSE) { echo "Invalid input"; } else {//send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } }else {//if "email" is not filled out, display the form echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; }?></body></html>
在上面的代码中,我们使用了 PHP 过滤器来对输入进行验证:
FILTER_SANITIZE_EMAIL 从字符串中删除电子邮件的非法字符
FILTER_VALIDATE_EMAIL 验证电子邮件地址
- PHP学习(9)-Email
- php email
- PHP email
- 【PHP】php 发送 Email
- php发Email
- php正则与email
- php正则与email
- php 发送 Email
- PHP发送Email 类
- php email邮箱验证
- php email验证
- php发送Email总结
- php正则匹配Email
- php上传&email处理
- php 发送 email
- php发送邮件email
- php发送email最终版
- php发送email
- 数字排序 o(n)时间 o(1)空间
- 类的中介的使用方法
- [Leetcode从零开刷]7. Reverse Integer
- 日文IT词汇的中文翻译
- elasticSearch安装常见错误或问题
- PHP学习(9)-Email
- LINUX 查看CPU信息
- Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- angularJS自定义指令各配置项详解
- 简易上传图片原生input-file实现方案
- python 绘制 Caffe 的trainloss testloss testaccuracy 曲线
- 患得患失,不愿及时止损
- 关于layer如何绑定img 与 id
- vs2015调试X64工程时,提示:调试监视器(MSVSMON.EXE)未能启动