搜索
首页后端开发php教程在PHP中用Socket发送电子邮件(三)_PHP

邮件发送处理

  下面是真正的秘密了,可要看仔细了。:)


1    function send( $to,$from,$subject,$message)
2    {
3
4        //连接服务器
5        $this->lastact=\"connect\";
6
7        $this->show_debug(\"Connect to SMTP server : \".$this->smtp, \"out\");
8        $this->fp = fsockopen ( $this->smtp, $this->port );
9        if ( $this->fp )
10        {
11
12            set_socket_blocking( $this->fp, true );
13            $this->lastmessage=fgets($this->fp,512);
14            $this->show_debug($this->lastmessage, \"in\");
15
16            if (! ereg ( \"^220\", $this->lastmessage ) )
17            {
18                return false;
19            }
20            else
21            {
22                $this->lastact=\"HELO \" . $this->welcome . \"\n\";
23                if(!$this->do_command($this->lastact, \"250\"))
24                {
25                    fclose($this->fp);
26                    return false;
27                }
28
29                $this->lastact=\"MAIL FROM: $from\" . \"\n\";
30                if(!$this->do_command($this->lastact, \"250\"))
31                {
32                    fclose($this->fp);
33                    return false;
34                }
35
36                $this->lastact=\"RCPT TO: $to\" . \"\n\";
37                if(!$this->do_command($this->lastact, \"250\"))
38                {
39                    fclose($this->fp);
40                    return false;
41                }
42               
43                //发送正文
44                $this->lastact=\"DATA\n\";
45                if(!$this->do_command($this->lastact, \"354\"))
46                {
47                    fclose($this->fp);
48                    return false;
49                }
50
51                //处理Subject头
52                $head=\"Subject: $subject\n\";
53                if(!empty($subject) && !ereg($head, $message))
54                {
55                    $message = $head.$message;
56                }
57               
58                //处理From头
59                $head=\"From: $from\n\";
60                if(!empty($from) && !ereg($head, $message))
61                {
62                    $message = $head.$message;
63                }
64
65                //处理To头
66                $head=\"To: $to\n\";
67                if(!empty($to) && !ereg($head, $message))
68                {
69                    $message = $head.$message;
70                }
71
72                //加上结束串
73                if(!ereg(\"\n\.\n\", $message))
74                    $message .= \"\n.\n\";
75                $this->show_debug($message, \"out\");
76                fputs($this->fp, $message);
77
78                $this->lastact=\"QUIT\n\";
79                if(!$this->do_command($this->lastact, \"250\"))
80                {
81                    fclose($this->fp);
82                    return false;
83                }
84            }
85            return true;
86        }
87        else
88        {
89            $this->show_debug(\"Connect failed!\", \"in\");
90            return false;
91        }
92    }
--------------------------------------------------------------------------------  有些意思很清楚的我就不说了。

  这个函数一共有四个参数,分别是$to表示收信人,$from表示发信人,$subject表求邮件主题和$message表示邮件体。如果处理成功则返回true,失败则返回false。

第8行,连接邮件服务器,如果成功响应码应为220。
第12行,设置阻塞模式,表示信息必须返回才能继续。详细说明看手册吧。
第16行,判断响应码是否为220,如果是,则继续处理,否则出错返回。
第22-27行,处理HELO指令,期望响应码为250。
第29-34行,处理MAIL FROM指令,期望响应码为250。
第36-41行,处理RCPT TO指令,期望响应码为250。
第44-49行,处理DATA指令,期望响应码为354。
第51-76行,生成邮件体,并发送。
第52-56行,如果$subject不为空,则查找邮件体中是否有主题部分,如果没有,则加上主题部分。
第59-63行,如果$from不为空,则查找邮件体中是否有发信人部分,如果没有,则加上发信人部分。
第66-70行,如果$to不为空,则查找邮件体中是否有收信人部分,如果没有,则加上收信人部分。
第73-74行,查找邮件体是否有了结束行,如果没有则加上邮件体的结束行(以\".\"作为单独的一行的特殊行)。
第76行,发送邮件体。
第78-83行,执行QUIT结否与服务器的连接,期望响应码为250。
第85行,返回处理成功标志(true)。
第81-91行,与服务器连接失败的处理。
 以上为整个send_mail类的实现,应该不是很难的。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何在Outlook中按发件人、主题、日期、类别、大小对电子邮件进行排序如何在Outlook中按发件人、主题、日期、类别、大小对电子邮件进行排序Feb 19, 2024 am 10:48 AM

Outlook提供了许多设置和功能,可帮助您更有效地管理工作。其中之一是排序选项,可让您根据需要对电子邮件进行分类。在这个教程中,我们将学习如何利用Outlook的排序功能,根据发件人、主题、日期、类别或大小等条件对电子邮件进行整理。这将让您更轻松地处理和查找重要信息,提高工作效率。MicrosoftOutlook是一个功能强大的应用程序,可以方便地集中管理您的电子邮件和日历安排。您可以轻松地发送、接收和组织电子邮件,而内置的日历功能也让您能够方便地跟踪您即将面临的活动和约会。如何在Outloo

当您在 iPhone 上使用“隐藏我的电子邮件”时会发生什么?当您在 iPhone 上使用“隐藏我的电子邮件”时会发生什么?Feb 22, 2024 pm 09:19 PM

Apple提供了一个名为“隐藏邮件地址”的重视隐私的功能,允许用户在需要注册账户的应用程序或网站上隐藏其真实电子邮件地址。我们已经教您如何在iPhone上使用此功能,现在让我们一起看看在日常工作中使用它时可能发生的情况。什么是iPhone上的隐藏邮件地址?“隐藏邮件地址”功能的目的是为了保护您的电子邮件地址隐私。通过为应用程序和网站注册提供临时电子邮件地址的方式,您无需直接提供个人的真实电子邮件地址。这个功能允许您生成多个iCloud电子邮件地址,用于注册不同的服务,从而避免泄露真实的电子邮件地

WhatsApp技巧:发送高清照片和视频的方法WhatsApp技巧:发送高清照片和视频的方法Sep 10, 2023 am 10:13 AM

WhatsApp推出了一个新选项,允许用户通过消息传递平台以高分辨率发送照片和视频。继续阅读以了解它是如何完成的。WhatsApp发布了一个更新,允许iPhone和Android用户以高分辨率发送照片和视频,最终解决了该服务的低质量媒体共享限制。该选项称为“高清质量”,意味着用户可以以最小的压缩发送更清晰的照片和视频。例如,在iPhone上捕获的图像现在可以以3024x4032分辨率发送,而不是以前的最大920x1280分辨率,而视频可以以1280×718分辨率发送,而不是848×476分辨率。

抖音上如何发给别人文件?上发给别人文件怎么删除?抖音上如何发给别人文件?上发给别人文件怎么删除?Mar 22, 2024 am 08:30 AM

在抖音上,用户不仅可以分享自己的生活点滴和才艺,还可以和其他用户互动交流。在这个过程中,有时候我们需要向其他用户发送文件,比如图片、视频等。那么,在抖音上如何发给别人文件呢?一、抖音上如何发给别人文件?1.打开抖音,进入你想要发送文件的聊天界面。2.点击聊天界面中的“+”号,选择“文件”。3.在文件选项中,你可以选择发送图片、视频、音频等文件。选择你想要发送的文件后,点击“发送”。4.等待对方接受你的文件,一旦对方接受,文件就会传输成功。二、抖音上发给别人文件怎么删除?1.打开抖音,进入你发送文

如何利用C++实现一个简单的电子邮件发送程序?如何利用C++实现一个简单的电子邮件发送程序?Nov 02, 2023 pm 05:35 PM

如何利用C++实现一个简单的电子邮件发送程序?随着互联网的普及,电子邮件已经成为人们日常生活和工作中不可或缺的一部分。在C++编程中,我们可以利用SMTP(SimpleMailTransferProtocol)协议实现一个简单的电子邮件发送程序。本文将介绍如何使用C++编写一个基本的电子邮件发送程序。首先,我们需要准备一些工具和库来实现我们的程序。首先

如何使用Flask-Mail发送电子邮件如何使用Flask-Mail发送电子邮件Aug 02, 2023 am 10:17 AM

如何使用Flask-Mail发送电子邮件随着互联网的发展,电子邮件已经成为了人们沟通的重要工具。在开发Web应用中,有时候我们需要在特定的场景下发送电子邮件,比如用户注册成功后发送欢迎邮件,或者用户忘记密码时发送重置密码邮件等。Flask是一款简单而又灵活的PythonWeb框架,而Flask-Mail是Flask框架下用于发送邮件的扩展库,本文将介绍如何

如何将HTML表单数据作为文本并发送到html2pdf?如何将HTML表单数据作为文本并发送到html2pdf?Sep 06, 2023 pm 12:21 PM

html2pdf是一个JavaScript包,允许开发人员将html转换为canvas、pdf、图像等。它将html作为参数并将其添加到pdf或所需文档中。此外,它还允许用户在添加html内容后下载该文档。在这里,我们将访问表单并使用html2pdfnpm包将其添加到pdf中。我们将看到不同的示例,以向pdf添加表单数据。语法用户可以按照以下语法将html表单数据作为文本并将其发送到html2pdf。varelement=document.getElementById('form');html2

电子邮件的特点是什么电子邮件的特点是什么Jan 22, 2021 pm 04:10 PM

电子邮件的特点是:1、成本低廉,电子邮件采用存储转发方式在网络上逐步传递信息,不像电话那样直接,但费用较低;2、传播速度快,电子邮件综合了电话通信和邮政信件的特点,它传送信息的速度和电话一样快,几秒钟之内可以发送到世界上任何指定的目的地;3、非常便捷;4、广泛的交流对象,可与世界上任何一个角落的网络用户联系;5、信息多样化,可以是文字、图像、声音等多种形式;6、比较安全。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。