php中mail,php中mail()函数和SMTP工作原理及实际

2023-11-05

php中mail()函数和SMTP工作原理及实际

发表于2019-05-24 12:36|

次阅读|

来源网络整理|

作者session

摘要:php中mail()函数和SMTP工作原理及实际

php中mail()函数和SMTP工作原理及实际

一个发送E-MAIL的脚本兴许是你可以在Web 站点上找到的最一般的脚本之一了,只管它很简略,一个邮件脚本有时会令程序员十分丧气.PHP中有一个叫做mail()的函数,它只有要知道接纳方的地址 和函件主体就可能发送邮件,然而要让mail()按你的意思运转你还需求处理一些辣手的成绩.

要使mail()可以运转,你必须有一 个SMTP服务器以便PHP可以衔接下来.不管这个服务器对邮件程序如许重要,大少数人对它如何运行没有一星半点的概念.在本教程中,咱们将提醒SMTP 的秘密并处理一些利用PHP发送邮件的常见成绩.而本文中的另一些主题将包括循环遍历一个地址列表的方法以及同时以文本和HTML格式向接纳者发送一个邮 件的方法.

SMTP 是简略邮件传输协定(Simple Mail TransferProtocol)的缩写,而一个SMTP服务器是一台运转这种协定并收回邮件的计算机.运转这种协定实践上指的是运转诸如 Sendmail和Qmail的程序--假设你利用的是一台非Windows计算机的话.在Windows平台上,作为Windows NT ServicePack一局部或是内建于Windows 2000内部的SMTP服务程序就是典型的这种程序.

我并不是说SMTP软件包 就只要那些,然而它们是最一般的.假设你的Web站点利用了互联网服务提供者的主机软件包(Internet ServiceProvider's virtual hostingpackage)的一局部,那么SMTP服务程序就应该已经在这台计算机上装置了.假设你是一台位于ISP或是室内的计算机的系统治理员, 那么你很有能够已经在这台计算机上装置了某种SMTP软件,用来解决从Web服务器发送邮件的过程.

然而,假设你是一个集体用户并只要一 个开发用的Web服务程序运转在你的集体电脑上,你能够没有在本人的机器上运转SMTP软件.下面是一个十分简略然而准确的拇指定律:假设你是一个 Windows用户而从没有看见SMTP服务器这样的字眼,那么你就没有运转这个程序.假设你的确没有,那么你有两种抉择:装置,配置,和维护一个 SMTP服务程序(假设你不知道那是怎样一回事的话就不引荐你利用这种方法)或是利用一个现存的SMTP服务器.

"假设一个服务器如今没 有运转的话,我又怎样利用它呢?"你能够要问.假设你的计算机是经过拨号衔接(或是DSL或电缆)连到互联网的话,你可能利用你ISP的外发邮件服务器. 例如,假设你开发用的 计算机是一个Windows98的系统并利用56kbpsmodem经过EarthLink衔接到互联网,那么你就可能利用 mail.earthlink.net作为你的SMTP服务器.不论你对你的外发邮件服务器利用什么样的邮件客户端(Eudora, Outlook, NetscapeMail等等),它们都将和你的PHP代码利用你的SMTP服务器的过程一样.技巧就是使PHP知道一点点理想.

在php.ini治理配置文件里,有几个条目需求被设置以便mail()函数可以失常运转.在扭转它们以前,搞清楚它们都是做什么用的.你可能利用phpinfo()函数经过创建一个文件来显示系统以后的配置情况,这个文件包括:

保存这个文件,将它放置到你的Web服务程序的文件根目录,然后经过你的阅读器访问它.你应该可能看到一个被柔美的格式化了的信息,显示你的配置情况.你要查看的条目如下:

SMTP

sendmail_from

sendmail_path

假设你没有利用windows,那么sendmail_path指令就是你惟一要担心的货色.假设你正在利用Windows,你就需求看看最后两个指令.

假设你利用的是Linux或是一个Unix变种,sendmail_path看起来应该象这样:

sendmail_path = /usr/sbin/sendmail

或许假设你利用Qmail:

sendmail_path = /var/qmail/bin/sendmail

在这条指令里,你还可能设置配置参数来指明队列缓冲选项或是显示的设置Return-Path头,如下所示:

sendmail_path = /usr/sbin/sendmail -t-fyou@yourdomain.com

作 为一个非Windows用户,这就是你要做的所有了.假设你利用的是Windows,你有更多的事件要做.你还需求看一看SMTP和 sendmail_from的值.不要被sendmail_from指令名字中的sendmail弄迷糊了.只管你没有在Windows上利用名叫 Sendmail的程序,但那只是指令的名字.不要被它吓到了.

在你的phpinfo()显示的后果里,看看SMTP和sendmail_from的缺省值--它们要么是空白,要么蕴含了胡说八道乱的值.你应该把它们改成无心义的值.

假设你信念在这台电脑上运转一个SMTP服务程序,你在php.ini文件中的条目就应该如下:

SMTP = localhost

然而,假设你要利用你ISP(在这个例子中是EarthLink)的外发邮件服务器,那么php.ini中的邮件看起来应该如下:

SMTP = mail.earthlink.net

你也可能利用IP地址而不是域名,由于计算机不区分这两种条目.

第二条配置指令是sendmail_from,它应该被设置成From头中的电子邮件地址.它可能在脚本里被修正然而通常作为缺省值利用.下面就是这个配置指令的示例youraddress@yourdomain.com指的是你本人的邮件地址.

sendmail_from =youraddress@yourdomain.com

在做了这些配置上的改动当前,重启Web服务程序然后利用phpinfo()函数来验证这些修正.在这些工作实现当前,你就可能用PHP来发送电子邮件了.

mail()函数是十分简略的:只要五个参数,而其中的两个是可选的.这些参数是:

接纳方地址

主题

函件内容

其它文件信息头(可选)

SMTP服务程序的其它配置选项(可选)

附加的头参数控制了诸如CC, BCC, Reply-To之类的邮件性能,或许其它遵照SMTP协定的性能.在这个例子中,我只利用From 和 Reply-To信息头.

假设你想给我发邮件但你利用的是一个非Windows系统, 程序代码就应该如下:

$to= "julie@thickbook.com";

$subject = "ZDNet Developer article";

$msg = "I completely understand SMTP servers now!";

$headers = "From:me@mycompany.comnReply-To:someoneelse@mycompany.com";

$config = "-fwebmaster@mycompany.com";

mail("$to", "$subject", "$msg", "$headers", "$config");

echo "finished!";

?>

假设你利用的是一个基于Windows的SMTP服务,那么你有能够不需求利用第五个参数,而且在附加的头信息参数中(也就是第四个参数),你需求将它们来到写--利用rn而不是n.所以,异样的一个邮件经过基于Windows的SMTP服务发送的代码如下:

$to = "julie@thickbook.com";

$subject = "ZDNet Developer article";

$msg = "I completely understand SMTP servers now!";

$headers = "From:me@mycompany.comrnReply-To:someoneelse@mycompany.com";

mail("$to", "$subject", "$msg", "$headers");

echo "finished!";

?>

脚本中的echo语句使你的Web阅读器在脚本运转实现的时分向你显示一条信息.假设不写echo语句,你就会失去一个"空文件"的对话框,由于没有任何输出可以发送到阅读器端.

只需可以衔接到指定的SMTP服务器mail()函数就会前往真值.然而这并不象征着邮件胜利的到达了接纳方那里.mail()函数不会期待或报告SMTP服务器发来的胜利/谬误代码.

mail() 函数有能够前往假值,然后给你警告"无奈衔接,在第x行"或是"未知的谬误,在第x行."假设这两条信息中的任何一条出现了,你就应该反省php.ini 中的SMTP值.惹起这些消息有两种能够:SMTP服务器瘫痪了,或许PHP无奈衔接到它.无论是这两种情况中的哪一种,你的邮件都无奈被发送进来.

这个脚本对这些参数利用硬编码的值.利用一个简略的HTML表单,你就可能在这些参数中插入一些值并领有一个良好的反馈表单.

注:更多精彩文章请关注三联编程教程栏目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php中mail,php中mail()函数和SMTP工作原理及实际 的相关文章

  • 文字模糊效果(Opencv实现)

    效果图 实现过程 该方法以photoshop中的图层为基本思想 对文字的处理 实际上是将图片作为一幅图像来处理的 而背景是一幅图像 即另一个图层 1 读取文字图片 将图片进行高斯模糊 因高斯模糊是一个卷积的过程 所以可以设定卷积因子的大小
  • qt序列化

    序列化 注意序列的长度
  • STM32MP157 tf-a2.6移植

    STM32MP157 tf a2 6移植 1 初次编译 2 移植 2 1 添加自己的板子 2 2 修改设备树 2 2 1 修改串口Uart 2 2 2 修改时钟 2 2 3 修改电源 2 2 4 修改DDR 2 2 5 修改EMMC 3 编
  • linux:Temporary failure in name resolution&Couldn’t resolve host

    所有域名无法正常解析 ping www baidu com 等域名提示 Temporary failure in name resolution错误 root localhost ping www baidu com ping www ba
  • 开源数据库 H2, HSQLDB, DERBY, PostgreSQL, MySQL区别/对比图表

    开源数据库 H2 HSQLDB DERBY PostgreSQL MySQL区别 对比图表
  • 通过Idea或命令将本地项目上传至git

    通过Idea或命令将本地项目上传至git 一 Git创建仓库 1 登录Gitee账号 点击新建 2 填写如下相关信息 点击创建 3 在此处可以复制项目链接 二 Idea配置和解绑git 提交项目 1 idea打开项目 操作如下 2 在弹框里
  • 关于getComputedStyle的第二个参数的解释

    最近别人问了我一下getComputedStyle的封装过程为什么要写if currentStyle 我当时也没反应过来 毕竟好长时间没有用了 因此决定来探究一下这个getComputedStyle 函数 即是温习也是和大家分享 如果有不对
  • Java Thread类的静态Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler()方法(带示例)...

    线程类静态Thread UncaughtExceptionHandler getDefaultUncaughtExceptionHandler Thread Class static Thread UncaughtExceptionHand
  • 程序“[1344] MyProject2.exe: 本机”已退出,返回值为 0 (0x0) 错误解决方法

    笔记本用的是win7 64位的系统 没法再用以前的VC6 0了 所以就用了VS2010 在编写窗口程序的时候 运行的时候总是一闪而过 并输出以下的信息 还真是麻烦呀 MyProject2 exe 已加载 D vc练习 MyProject2
  • 海湾主机汉字注释表打字出_海湾消防主机字根表-海湾消防主机

    1洁2964金2980 津2982紧2984锦2985仅2986进2988禁2991荆3003 京3009精3011经3013井3014警3015镜3021九3037 酒3038救3040旧3041居3051菊3053局3054巨3062
  • 性能测试之压力测试

    文章目录 一 基本介绍 二 性能指标 三 下载安装JMeter 1 下载安装包 2 启动JMeter 四 使用JMeter 1 模拟用户请求 2 填写测试地址 3 接收测试结果 4 结果解释 一 基本介绍 压力测试考察当前软硬件条件下系统所
  • 学爬虫之前必须先了解的基础

    爬虫的基础 1 先介绍一下啥是爬虫 在这我也就不扯啥嘴皮子了 简单讲 爬虫就是将前端网页上的数据通过一定的方式爬取下来 一般爬虫可以分为 通用爬虫 和 聚焦爬虫 两种 通用爬虫 通用网络爬虫 是 捜索引擎抓取系统 Baidu Google
  • 【Android-JetpackCompose】13、实战在线课程 App

    文章目录 一 BottomNavigation 底部导航 1 1 底部导航栏的布局 点击 1 2 设置 bottomBar 的颜色 1 3 设置顶部 actionBar 的颜色 二 主页 StudyScreen 2 1 顶部状态栏 2 2
  • HTML表格(table)实例

    实例1 课程表 table border 1 width 60 cellpadding 2 caption 课程表 caption tr align center td 时间 日期 td td 一 td tr table
  • 附近的商店

    看着每天的感染数据在下降 上海解封的日子快到了 打开美团看看附近店铺有没有好吃 准备解封大吃特吃一顿 排序按照距离优先 还有附近几公里之内的店铺 想了解这个功能怎么实现的 查了网上资料 得到的常用的算法是 geohash 和 S2 Geoh
  • Reverse题常规步骤

    Reverse题常规步骤 1 查壳 一般难度的题目都是加了壳的 都需要进行壳分析 2 脱壳 有壳就脱壳 3 IDA逆向 脱完壳以后用IDA进行逆向分析
  • CentOS7.x环境下安装Docker以及常用命令

    Docker官方建议在Ubuntu中安装 因为Docker是基于Ubuntu发布的 而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的 在很多版本的CentOS中是不支持更新最新的一些补丁包的 我这里将Docker安装到阿里云
  • 人脸识别损失函数综述(附开源地址)

    原文 人脸识别损失函数综述 附开源地址 原文地址 https zhuanlan zhihu com p 51324547 常用的度量学习损失方法有对比损失 Contrastive loss 三元组损失 Triplet loss 四元组损失
  • Android 蓝牙串口通信Demo

    目录 一 前言 二 效果图 三 源码 带注释 1 布局代码 2 Java代码 3 权限声明 四 注意 五 项目源码下载 一 前言 在学校和机电的同学组队准备做一个智能小车去参加比赛 需要我开发一个小车的控制app 所以我开始学习蓝牙串口通信

随机推荐

  • 一文带你深入了解HTTP

    http的发展史 在学习网络之前 了解它的历史能够帮助我明白为何它会发展为如今这个样子 能让我有探究它的兴趣 下面的这张图片就展示了 互联网 诞生至今的发展历程 http是什么 HyperTextTransferProtocol 直译为 超
  • sql代码转换小工具(delphi)

    1 下载 2 粘贴sql语句 3 msql转换为delphi sql语句
  • shell脚本基础3——正则表达式

    文章目录 一 基本了解 二 基本正则表达式 2 1 字符匹配 2 2 位置锚定 2 3 匹配次数 2 4 分组 三 扩展正则表达式 3 1 字符匹配 3 2 位置锚定 3 3 匹配次数 3 4 分组 3 5 或者 一 基本了解 正则表达式分
  • 对表的简单查询

    SQL命令对表进行查询 目录 SQL命令对表进行查询 1 无条件查询 2 条件查询 3 统计汇总查询 4 分组查询 5 对查询结果排序 1 无条件查询 无条件查询指只包含 SELECT FROM 的查询 这种查询最简单 例如 在S表中查询所
  • Android Studio安装中的问题及第一次运行hello world程序

    总结一下 在安装Android Studio中可能出现和遇到的问题 并给出解决方案 1 AS在安卓官网可以直接下载完整的安装包 2 SDK找不到的情况 可以自己下载 参考 https www jianshu com p 4ac1313b50
  • 自定义动态数据源

    文章目录 准备 业务流程分析 代码实现 网页上切换数据源 准备 mysql spring boot 配置依赖 配置文件 数据源配置 spring datasource type com alibaba druid pool DruidDat
  • UnityVR--小程序3--金色的子弹2

    子弹需要一个打击目标 目标具备一定的生命值 HP 当生命值将为0时 目标被击落并消失 1 前篇的AXButton cs脚本不需要修改 2 子弹的程序Bullet cs中 OnTriggerEnter Collider other 函数修改为
  • 肖战

    肖战是中国内地男演员 歌手 主持人 毕业于中央戏剧学院表演系 他曾出演过多部影视剧 包括 花千骨 武媚娘传奇 和 长安十二时辰 此外 他还是一位多才多艺的歌手 曾发行过多张个人音乐专辑
  • 苹果开发平台常用网址链接

    苹果开发者中心 https developer apple com cn 苹果开发者中心 企业类型 https developer apple com cn programs enterprise 注册账号 https developer
  • react+antd实现Table拖拽调整列宽

    注意 列需要传入 width 并且配合下面的css样式才能显示拖拽手势 import React useEffect useState from react import Table from antd import Resizable f
  • PE半透明屏是怎么制造的?工艺、材料、应用

    PE半透明屏是一种新型的屏幕材料 具有半透明的特点 它由聚乙烯 PE 材料制成 具有良好的透明度和柔韧性 PE半透明屏广泛应用于建筑 广告 展览等领域 具有很高的市场潜力 PE半透明屏的特点之一是其半透明性 它可以在一定程度上透过光线 使得
  • 相关性分析热力图(Python&Matlab代码实现)

    目录 1 热力图 1 1 简介 1 2 语法 2 算例1 Python代码实现 2 1 算例 2 2 Python代码 2 3 运行结果 3 算例2 Python代码实现 4 算例3 Python代码实现 4 1 算例 4 2 Python
  • 小电容通高频大电容通低频的理解

    本文参考为什么电容通高频阻低频 记录下个人理解并总结 1 电容的作用是通高频阻低频 高频的时候电容总是还没充满电 负半周期便到来 所以电流始终存在 低频的时候信号交流电负半周还没到来 电容已充满电便发生断路 2 理论上电容越大 能通越高的高
  • 简单解释同步、异步、阻塞、非阻塞、中断、轮询、多线程,协程这几个概念(代码未验证,仅参考)

    科普 同步和异步的区别 同步和异步是指程序执行的方式 其中同步指程序按顺序执行 每个任务必须等待前面的任务执行完成后才能执行 而异步则指程序可以在执行一个任务时同时执行另一个任务 不需要等待前一个任务执行完毕 同步 Synchronous
  • supervisor源码分析

    Supervisor分析 1 运行原理概述 Supervisor生成主进程并将主进程变成守护进程 supervisor依次生成配置文件中的工作进程 然后依次监控工作进程的工作状态 并且主进程负责与supervisorctl客户端通信 实现主
  • c语言中求三个整数中的最大值和最小值,编程用指针实现输入三个整数,求其中的最大值...

    公告 为响应国家净网行动 部分内容已经删除 感谢读者理解 话题 编程用指针实现输入三个整数 求其中的最大值回答 include stdio h int getmax int p int n int i max p max p p 0 for
  • C++ 多线程 学习笔记

    线程睡眠很稳定 但无线程睡眠不稳定 线程调用类方法 有参数时调用方法 当参数为引用时 detach分离线程 分离线程与主线程同时进行 join会使主线程挂起 执行join进来的进程 detach必须让主线程在还住运行的情况下调用 换句话说就
  • harbor数据库迁移

    harbor数据库迁移 相同版本间迁移 一 数据导出 旧harbor机 1 进入数据库容器 root localhost docker exec u root it d53efe26b3da bin bash 2 导出registry数据库
  • KafkaConsumer-Kafka从入门到精通(十)

    上篇文章说了 消息压缩可以看分情况进行 判断下服务器cpu空闲还是io空闲较多 如果cpu空闲较多 则考虑消息积压 反之则不考虑 还有消费者组 consumer group 对于同一个group 只会发送一条消息进入一个实例 位移提交在0
  • php中mail,php中mail()函数和SMTP工作原理及实际

    php中mail 函数和SMTP工作原理及实际 发表于2019 05 24 12 36 次阅读 来源网络整理 作者session 摘要 php中mail 函数和SMTP工作原理及实际 php中mail 函数和SMTP工作原理及实际 一个发送