加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

详解PHP发送邮件知识点

发布时间:2021-05-19 22:43:30 所属栏目:编程 来源:网络整理
导读:发送邮件是网站的常用成果,用户激活、找回暗码等场景常必要发送邮件到用户邮箱。本文先回首发送邮件的相干观念,再给出行使PHP发送邮件的示例代码。 发送短信 从成果上看,短信和邮件相同,用途常是关照和安详校验。发送短信(根基上)必要向供给商付费,所
副问题[/!--empirenews.page--]

发送邮件是网站的常用成果,用户激活、找回暗码等场景常必要发送邮件到用户邮箱。本文先回首发送邮件的相干观念,再给出行使PHP发送邮件的示例代码。

发送短信

从成果上看,短信和邮件相同,用途常是关照和安详校验。发送短信(根基上)必要向供给商付费,以是短信供给商有动力提供清楚的文档,易用的接口利便用户接入。一样平常而言,发送短信的是:

探求供给商,譬喻阿里大鱼、聚合数据等;

注册账户,获取appid和appkey;

申请模板;

查察接口文档,集成到应用中;

挪用API发送短信。

流程简朴易懂,接入和行使也异常便捷,根基上一两小时内就能对接和测试好。用户无需思量讯息在通信进程中的编码、寻址下发等细节,弱点是要付费。

邮件一样平常是免费处事,相干支持没那么到位,这也要领略。各类编程说话发送邮件的类库不少,从信源角度看根基可以分成两类:从本机发送和从第三方邮件处事商发送。为了领略邮件发送的流程,先先容一些相干观念。

相干观念

大部门打仗到互联网的人都有行使邮件的履历,但根基上限于邮件客户端、网页端和提供商这几个观念。作为一个开拓,领略本节中的以下观念能更好的帮你把握邮件通信中的细节。

MUA : Mail User Agent,邮件用户署理。用户署理是开拓中常常打仗到的词,首要指 领略人的意图并代表用户向资源方哀求的器材。譬喻赏识器是最常用的用户署理,以HTTP/HTTPS协议名目向web处事器发送哀求,并理会相应,渲染后泛起给用户。邮件用户署理,常见的是Foxmail、Outlook这类器材,人们写好邮件后,按名目封装邮件内容与邮件处事器通信。

MTA : Mail Transfer Agent,邮件传输署理,帮用户收发邮件的措施。常说的邮件处事器指的就是MTA,开源的措施有sendmail,postfix,QMail等。

MRA : Mail Retrieval Agent,邮件收取署理,将用户的邮件从邮件处事器取回当地。邮件客户端是常见的MRA。

SMTP : Simple Mail Transfer Protocol,简朴邮件传输协议。用户与邮件处事器、邮件处事器相互转达邮件均行使该协议(默认明文,可行使SSLTLS加密)。

POP3/IMAP : Post Office Protocol version 3/Internet Message Access Protocol,邮局协议版本3或收集信息获取协议,客户端从处事端获取邮件时行使的协议。

用户A(163邮箱)向用户B(Gmail邮箱)发信,用户B获守信件的进程涉及到上述的观念。流程和观念相关可用如下简图暗示:

用户B M|S M|I U|M R|M A|T A|A |P |P v v MTA(163)--转发(SMTP)->MTA(gmail)

注:上图给出的是邮件发送的概略流程,其他MSA、MDA、ESMTP、SMTPS等也许会呈此刻整个流程中,但不影响邮件收发的领略。下文中会提到的缩写和观念会注明,其他请自行查询。

postfix

Linux下发送邮件的软件首要是sendmail和postfix,它们在体系中充当上文观念中的MTA/MDA(Mail Delivery Agent,邮件投递署理)脚色。它辅佐用户向外发送邮件,吸取邮件投递到用户信箱(默认位置/var/spool/mail/用户名)。

sendmail是老牌的邮件软件,知名度很是高。可是Wietse(Wietse Zweitze Venema)用的不爽,于是有了postfix。postfix呼吁(险些)兼容于sendmail,但更高效和安详(后缀fix的由来),是今朝大部门Linux刊行版的默认邮件收发软件,保举行使postfix而非sendmail(本博客多年前有篇文章写怎样设置sendmail,当时幼年蒙昧见地少,规划抽闲把那篇文章改一下)。

postfix的首要设置文件是/etc/postfix/main.cf,设置文件的注释很是全,选项根基是自表明的。最重要的几个设置是:myhostname、myorigin、inet_interfaces、inet_protocols以及mydestination(假如你规划收外网来信的话)。必要留意inet_interfaces设置为localhost时,inet_protocols的值应为ipv4,不然也许会呈现相同postfix: fatal: parameter inet_interfaces: no local interface found for ::1的错误提醒。

与邮件相干的几个常用postfix呼吁是:

mail或mailx,发送邮件。tlanyan用户向root发送邮件:mail -s "Greetings" root@localhost -r tlanyan@localhost,接着终端中输入A nice day!,然后回车,按ctrl+D竣事正文编辑,邮件就已经发送出去。登录到root账号,会提醒在/var/spool/mail/root中有新邮件。用tail可能其他呼吁可查察邮件的具体信息。

postquque,查察邮件发送行列。postqueue -p可代替sendmail中的mailq呼吁,postqueue -f革新行列(逼迫实行发送行列中的邮件)。

postcat,查察未发送邮件的信息。譬喻postcat -q xxxx(xxxx是postqueue可能mailq表现的未发送行列ID)可查察邮件的具体信息,postcat -b -q xxxxx只查察邮件正文。

postsuper,超等用户才可行使的邮件打点措施。postsuper -d xxxx,删除行列ID为xxxxx的邮件;postsuper -h xxxxx,停息行列ID为xxxx的邮件发送,等。

以上先容对付发送邮件根基已足够。留意,mail呼吁发送的邮件能投递的条件是postfix正在运行(ps aux | grep postfix | grep -v grep输出不为空)。

有了postfix,设置好后可以对外发送邮件,也能收取外网发送过来的邮件,但限于呼吁行操纵。想用foxmail等客户端收发邮件,必要让处事器支持POP3/IMAP协议。开源的dovecot可以实现这个成果。dovecot处事于收邮件而非发送,相识其对开拓中的辅佐不大。假如想搭建一套完备的邮件体系(包罗网页端支持、垃圾邮件过滤、病毒查杀、传输加密等),提议参考或行使国产开源的 EwoMail。

相识postfix对开拓中发送邮件辅佐有多大?说真话,险些没有辅佐。缘故起因是为了防备垃圾邮件泛滥,各大云处事器厂商屏障了25端口(Google Cloud连465都干掉了)。亚马逊云通过申请尚有放行的也许(但有速度和逐日额度限定),其他厂商险些不会让你行使本身的域名从本机直接发送邮件。封禁25端口,必需行使第三方的邮件处事,险些是业界的尺度做法。

智慧的人也许想到,行使465加密端口(基于SMTPS,SMTP over SSL协议)或587端口(SMTP over STARTTLS协议)发送邮件,是不是就能绕开限定了?阿里云/腾讯云等厂商并不封禁465端口,发送邮件可以行使该端口而无需申请。但留意465和587端口是客户端和邮件处事器通信行使的端口,邮件处事器之间通信行使25端口。你可以通过465端口毗连到Gmail邮箱对外发送邮件,但无法让postfix行使465端口投递邮件到hotmail邮件处事器。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读