热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHPmail函数使用详解

一、介绍mail()函数,你能用此函数发送电子邮件。需求为了能使用Mail函数,在你的系统中,PHP必须有编译发送二进制邮件文件的权力。如果你用其它的邮件程序,例如qmail或postfix,你必须有把握使用它们发送邮件包。PHP将首先在你的路径上寻找sendmail,于

一、介绍
  mail()函数,你能用此函数发送电子邮件。
需求
  为了能使用Mail函数,在你的系统中,PHP必须有编译发送二进制邮件文件的权力。如果你用其它的邮件程序,例如qmail或postfix,你必须有把握使用它们发送邮件包。PHP将首先在你的路径上寻找sendmail,于是下列各项路径: :/usr/bin :/usr/sbin :/usr/etc :/etc:/usr/ucblib :/usr/lib是被推荐的。同样编译PHP的使用者一定有存取二进制的sendmail权力。
安装
  这些函数作为 PHP 核心的一部分,无需被安装即可使用。
运行时配置
  这些函数的行为受到全局配置文件 php.ini 的影响。
表格 1. Mail基本配置选项:

名称 默认值 可改变值
SMTP "localhost" PHP_INI_ALL
smtp_port "25" PHP_INI_ALL
sendmail_from NULL PHP_INI_ALL
sendmail_path DEFAULT_SENDMAIL_PATH PHP_INI_SYSTEM

为了更多的有关Mail的配置选项请看see ini_set()函数。以下是该配置选项的简要解释。
SMTP string
  仅用在Windows: SMTP服务器的DNS名字或IP地址。PHP在用mail()函数发送邮件时将用SMTP服务器。
smtp_portint
  仅用在Windows:当用mail()函数发送邮件时设置连接到指定SMTP服务器的端口号,默认: 25。仅在PHP 4.3.0后可用。
sendmail_from string
  PHP在Windows系统中发送邮件时,将用"From:"邮件地址。
sendmail_path string
  在什么地方找到发送邮件程序。通常在: /usr/sbin/sendmail或/usr/lib/中。在这配置选项为了你能正常工作而设置了一个默认值。但是如果它失败,你能在这里设定它。
  如果系统不能使用sendmail,应该按这个指示设置sendmail包裹器/ 替换他们提供的邮件系统。举例来说,Qmail使用者能设置它到新的路径: /var/qmail/bin/sendmail或/var/qmail/bin/qmail-inject。
  qmail-正确地处理邮件而不需要任何的选项。
资源类型
  该扩展模块未定义任何资源类型。
预定义常量
  该扩展模块未定义任何常量

二、使用方法
  
语法:   
  bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])   
  mail()函数可以发送指定的消息(string message)到指定的邮件地址(string to)。多个邮件地址之间要用逗号分割。能用这个函数发送邮件附件和特殊类型。   
  在上面的语法中的各个参数代表的意思是:
string to——收件人的email地址、
string subject——email的主题、
string message——email的正文、
string additional_headers——加email的附加信息到信件头尾部。   
  如果邮件成功的被发送mail()函数将返回TRUE,否则返回FALSE。 注意!   

mail()函数在Windows中的执行方法有很多地方不同于UNIX系统。   
  1、它不用局部二进制构成消息体;   
  2、类似 From:, Cc:, Bcc:和Date:的headers头元素,首先不被MTA解释,但能被PHP解释。 PHP <4.3仅支持 Cc:且区分大小写, PHP >= 4.3支持所有提及的headers头元素而且不区分大小写。
  二.一、例子 1、发送邮件:

mail("joecool@example.com", "My Subject", "Line 1\nLine 2\nLine 3");

  二.二、如果使用第四个参数,这个参数字串将插入信件头尾部。这是典型的插入用于说明附加信件头信息。多个附加信件头信息之间要用回车\r和换行\n符隔开。
  例子 2. 发送附加信件头信息邮件:

mail("nobody@example.com", "the subject", $message,"From: webmaster@{$_SERVER[’SERVER_NAME’]}\r\n"    ."Reply-T webmaster@{$_SERVER[’SERVER_NAME’]}\r\n"."X-Mailer: PHP/" .phpversion());

二.三、如果用additional_parameters参数,当发送邮件时程序用sendmail_path配置设置一个附加参数。例如,当在邮件前用-f选项时这能用来设定寄件人地址信封。当你用这个方法设置寄件人信封时,你也许需要加那个用户到你的WEB服务器You may need to add the user that your web server runs as to your sendmail configuration to prevent a ’X-Warning’ header from being added to the message when you set the envelope sender using this method.
例子 3. 发送附加的信件头信息邮件而且附加一个指令参数。

mail("nobody@example.com", "the subject", $message,"From: webmaster@{$_SERVER[’SERVER_NAME’]}",       "-fwebmaster@{$_SERVER[’SERVER_NAME’]}");


  注意:其中的第五个参数附加在PHP 4.0.5版本中。在PHP 4.2.3以后的版本中的安全模式中被禁止,如果用它的话将返回一个警告信息和返回FALSE值。   
  你同样能用简单的字符串构造技术建立一个复杂的邮件消息。
例子 4. 发送一个复杂邮件


/*收件人*/
$to = "Mary " . ", " ; //注意逗号
$to .= "Kelly ";
 /*主题*/
$subject = "Birthday Reminders for August";
/*正文*/
$message = ’         
Here are the birthdays upcoming in August!
’;
 /*你能设置头内容:Content-type来发送HTML格式邮件。*/
 $headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
 /*附加头消息*/
$headers .= "From: Birthday Reminder \r\n";
$headers .= "Cc: birthdayarchive@example.com\r\n";
$headers .= "Bcc: birthdaycheck@example.com\r\n";
/*发送它*/
mail($to, $subject, $message, $headers);
@example.com>@example.com>@example.com>


注意:
  1、不要在收件人地址和主题中有换行符号,否则邮件可能不能被发送出去。
  2、收件人地址参数(string to)中不能存在以"Something "形式地址,否则当用MTA时mail命令可能不被正确的分析。
  3、PHP使用mail函数发送邮件标题乱码问题 PHP程序使用mail()函数发送邮件的时候,标题中文的话会出现乱码。
解决方法:
  先用函数base64_encode() — 使用 MIME base64 对数据进行编码 标题字符串前加编码类型例如: =?UTF-8?B? 标题字符串后加:?= 邮件header说明Content-type — 防止邮件正文也乱码
举例:


$to         = 'xinple@example.com';
$subject  = "=?UTF-8?B?".base64_encode('邮件标题')."?=";
$headers  = 'MIME-Version: 1.0' . "rn";
$headers .= 'Content-type: text/html; charset=utf-8' . "rn";
// Additional headers
$headers .= 'To: Xinple' . "rn";
$headers .= 'From: Admin ' . "rn";
$headers .= 'Reply-To: Xinple' . "rn";
mail($to, $subject, $message, $headers);@example>@example.com>@example.com>

推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文探讨了如何通过最小生成树(MST)来计算严格次小生成树。在处理过程中,需特别注意所有边权重相等的情况,以避免错误。我们首先构建最小生成树,然后枚举每条非树边,检查其是否能形成更优的次小生成树。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ... [详细]
  • 本文介绍如何在 Xcode 中使用快捷键和菜单命令对多行代码进行缩进,包括右缩进和左缩进的具体操作方法。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
author-avatar
吖鸟集团总公司
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有