php发送邮箱源码,php 发送邮箱实例代码

2023-11-08

php教程 发送邮箱实例代码

class pop3 {

public $server="pop3.126.com";//服务器名

public $server_port=110;//服务器端口

public $timeout=30;//超过多少时间就算连接失败

public $connection=0;//保持与主机的连接

public $state="DISCONNECTED";//保存当前的状态

public $debug=0;//是否显示错误信息

public $err_str="";//服务器返回的错误信息

public $err_no;//服务器返回的错误号

public $respones;//保存服务器返回的信息

public $apop;//说明需要使用加密方式进行密码验证

public $messages;//邮件数

public $size;//邮件的总大小

public $mail_list;//保存各个邮件的大小及在服务器上的序列号

public $head=array();//邮件头的内容数组

public $body=array();//邮件体的内容数组

function POP3($server,$server_port,$timeout)

{

$this->server=$server;

$this->server_port=$server_port;

$this->timeout=$timeout;

$this->debug=TRUE;

}

function open()

{

if($this->server=="")

{

$this->err_str="无效的主机名!";

return FALSE;

}

if($this->debug) echo "正在打开 $this->server,$this->server_port,$this->timeout";

if(!$this->connection=@fsockopen($this->server,$this->server_port,$err_no,$err_str,$this->timeout))

{

$this->err_str="连接到POP服务器失败,错误信息:".$err_str."错误号:".$err_no;

return FALSE;

}

else

{

$this->getresponse();

if($this->debug)

$this->outdebug($this->response);

if(substr($this->respones,0,3)!="+OK")

{

$this->err_str="服务器返回无效信息:".$this->respones."请检查pop服务器是否正确";

return FALSE;

}

$this->state="AUTHORIZATION";

return TRUE;

}

}

function getresponse()

{

for($this->respones;;)

{

if(feof($this->connection))

return FALSE;

$this->respones.=fgets($this->connection,100);

$length=strlen($this->respones);

if($length>=2&&substr($this->respones,$length-2,2)=="rn")

{

$this->respones=strtok($this->respones,"rn");

return TRUE;

}

}

}

function outdebug($message)

{

echo htmlspecialchars($message)."n";

}

function command($command,$length,$code)

{

if($this->connection==0)

{

$this->outdebug("没有连接到任何服务器,请检查网络连接!");

return FALSE;

}

if($this->debug)

$this->outdebug(">>> $command");

if(!fput($this->connection,"$command rn"))

{

$this->outdebug("'无法发送命令'.$command");

return FALSE;

}

else

{

$this->getresponse();

if($this->debug)

$this->outdebug($this->respones);

if(substr($this->respones,0,$length)!=$code)

{

$this->outdebug("$command.'命令服务器返回信息无效'.$this->response");

return FALSE;

}

else

return TRUE;

}

}

function login($user,$pass)

{

if($this->state!="AUTHORIZATION")

{

$this->outdebug("没有连接到任何服务器或状态不对!");

return FALSE;

}

if(!$this->apop)

{

if(!$this->command("USER $user",3,"+OK")) return FALSE;

if(!$this->command("PASS $pass",3,"+OK")) return FALSE;

}

else

{

if(!$this->command(" APOP $user".md5($this->greeting.$pass),3,"+OK")) return FALSE;

}

$this->state="TRANSACTION";

return TRUE;

}

function stat_sum()

{

if($this->state!="TRANSACTION")

{

$this->outdebug("还没有连接服务器或没有成功登陆");

return FALSE;

}

if(!$this->command("STAT",3,"+OK"))

return FALSE;

else

{

$this->respones=strtok($this->respones," ");

$this->messages=strtok(" ");

$this->size=strtok(" ");

return TRUE;

}

}

function listmail($mess=null,$uni_id=null)

{

if($this->state!="TRANSACTION")

{

$this->outdebug("还没有连接服务器或没有成功登陆");

return FALSE;

}

if($uni_id)

$command="UIDL";

else

$command="LIST";

if($mess)

$command.=$mess;

if(!$this->command($command,3,"+OK"))

return FALSE;

else

{

$i=0;

$this->mail_list=array();

$this->getresponse();

while($this->respones!=".")

{

$i++;

if($this->debug)

$this->outdebug($this->respones);

if(uni_id)

{

$this->mail_list[$i][num]=strtok($this->respones," ");

$this->mail_list[$i][size]=strtok(" ");

}

else

{

$this->mail_list[$i][num]=intval(strtok($this->respones," "));

$this->mail_list[$i][size]=intval(strtok(" "));

}

$this->getresponse();

}

return TRUE;

}

}

function getmail($num,$line=-1)

{

if($this->state!="TRANSACTION")

{

$this->outdebug("还没有连接服务器或没有成功登陆");

return FALSE;

}

if($line<0)

$command="RETR $num";

else

$command="TOP $num $line";

if(!$this->command($command,3,"+OK"))

return FALSE;

else

{

$this->getresponse();

$is_head=TRUE;

while($this->respones!=".")

{

if($this->debug)

$this->outdebug($this->respones);

if(substr($this->respones,0,1)!=".")

{

$this->respones=substr($this->respones,1,strlen($this->respones)-1);

}

if(trim($this->respones)=="")

$is_head=FALSE;

if($is_head)

$this->head[]=$this->respones;

else

$this->body[]=$this->respones;

$this->getresponse();

}

return TRUE;

}

}

function dele($num)

{

if($this->state!="TRANSACTION")

{

$this->outdebug(",不能删除远程信件,还没有连接服务器或没有成功登陆");

return FALSE;

}

if(!num)

{

$this->outdebug("删除的邮件参数不对");

return FALSE;

}

if($this->command("DELE $num",3,"+OK")) return TRUE;

else return FALSE;

}

function close()

{

if($this->connection!=0)

{

if($this->state=="TRANSACTION")

$this->command("QUIT",3,"+OK");

fclose($this->connection);

$this->connection==0;

$this->state="DISCONNECTED";

}

}

}

//发送邮件类调用方法

$host="pop3.126.com";

$user=" ";

$pass=" ";

$rec=new pop3($host,110,20);

if(!$rec->open()) die($rec->err_str);

echo "open";

if(!$rec->login($user,$pass)) die($rec->err_str);

echo "login";

if(!$rec->stat()) die($rec->err_str);

echo "共有".$rec->messages."封信件,共".$rec->size."字节大小";

if($rec->messages>0)

{

if(!$rec->listmail()) die($rec->err_str);

echo "有以下信件:";

for($i=1;$i<=count($rec->mail_list);$i++)

{

echo "信件".$rec->mail_list[$i][num]."大小".$rec->mail[$i][size]."";

}

$rec->getmail(1);

echo "邮件头的内容:";

for($i=0;$ihead;$i++)

echo htmlspecialchars($rec->head[$i])."n";

for($i=0;$ibody;$i++)

echo htmlspecialchars($rec->body[$i])."n";

}

$rec->close();

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

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

php发送邮箱源码,php 发送邮箱实例代码 的相关文章

  • gcc编译器局部变量在栈中的内存分配

    内存分配 根据系统与编译器的不同 差别很大 之前曾经发现在ubuntu12 04系统gcc 4 63版本编译器 先定义的局部变量在栈中地址低 而后定义的局部变量在栈中地址高 与认知有差别 试了多个系统与编译器 最后发现与linux发行版关系
  • 华为机试题66-配置文件恢复

    描述 有6条配置命令 它们执行的结果分别是 命 令 执 行 reset reset what reset board board fault board add where to add board delete no board at a
  • 移动端一些调试小技巧

    1 本地服务在手机上打开 在调试手机机型的时候 可以在本地起来服务 这时候域名是localhost 打开命令行 输入ipconfig 选取IPv4 替换掉localhost 在同一网段下 用手机打开即可看到当前运行的页面 2 移动端调取控制
  • PCB过孔大小

    对于PCB设计的过孔几组常用的设定如下 常用过孔尺寸 孔径 24 mil 20 mil 16 mil 12 mil 8 mil 焊盘直径 40 mil 35 mil 28 mil 25 mil 20 mil 内层热焊盘直径 50 mil 4
  • Open3d之计算点云边界框

    核心函数 与Open3D中的其他几何类型一样 PointCloud几何类型具有边界框 当前 Open3D实现了AxisAlignedBoundingBox和OrientedBoundingBox 它们也可用于裁剪几何 AxisAligned
  • 【LeetCode-简单题 KMP匹配算法】28. 找出字符串中第一个匹配项的下标

    文章目录 题目 方法一 常规做法 一次一次截取再做比较 方法二 KMP匹配算法 题目 方法一 常规做法 一次一次截取再做比较 class Solution public int strStr String haystack String n
  • Letcode数组相关算法

    查找数组第K大数字 题意 查找一个数字第k大数字 如数组a 1 2 3 4 5 6 它的第2大数字就是5 代码 快排思路解决 在一个数组查找最k大数字 public static int findKthLargestNum int nums
  • windows文件夹挂载至Linux中

    背景 我们准备的安装包是需要在linux上使用docker compose进行部署 其中一个服务依赖GPU进行计算 需要能够使用到GPU 然而客户提供的是Windows服务器 且不能重装系统 并且最最最重要的是 NVIDIA的卡无法通过Hy
  • 解决ECharts关系点击图例节点偏移问题

    首先说问题原因 如果在没有设置x和y的坐标会出现这个问题 因为ECharts会开启自动布局算法所以在点击图例之后又将对应的图例进行的算法布局 所以才会导致数据偏移 解决办法 1 设置layout为none 禁止开启算法布局 layout n
  • 重排链表小结

    重排链表小结 又发现一道好玩的题目 顺带来复习一下之前学过的知识吧 Leetcode题目 143 重排链表 给定一个单链表 L 的头节点 head 单链表 L 表示为 L0 L1 Ln 1 Ln 请将其重新排列后变为 L0 Ln L1 Ln
  • Contruct 2制作的HTML5游戏的简单介绍

    游戏背景 在主宰大陆上生活着这样一群人 他们生来掌握着强大的魔法力量 然而自然界从来不允许什么生物可以一家独大 所以与之对应一群强大的魔法生物诞生了 一场人与兽的较量就此展开 伊琳娜是喀布尔山脉的守护者 负责保护阿帕丝女神的雕像 这天阳光正
  • windows配置了path系统环境变量但是不生效

    在配置path环境变量时发现配置的环境变量压根没有效果 但是环境变量内容也没写错 那多半是这个原因 正确的 C Program Files x86 NVIDIA Corporation PhysX Common SystemRoot sys
  • zabbix通过IPMI监控硬件环境(温度和风扇)

    IPMI Intelligent PlatformManagement Interface 即智能平台管理接口是使硬件管理具备 智能化 的新一代通用接口标准 用户可以利用 IPMI 监视服务器的物理特征 如温度 电压 电扇工作状态 电源供应
  • Windows通过计划任务定时执行bat文件

    首先打开Windows系统的 开始 菜单 从中依次点选 程序 附件 系统工具 任务计划程序 命令 点击 创建任务 后如图所示 填写好相应的名称和勾选好必要的条件 选择 触发器 选项 点击 新建 创建任务执行时间 重复任务间隔 这个选择后 后
  • 常见登录鉴权方案

    编者注 今天我们分享的是卢士杰同学整理的网站常用鉴权方案的实现原理与实现以及他们的适用场景 帮助大家在业务中做合适的选择 背景 说起鉴权大家应该都很熟悉 不过作为前端开发来讲 鉴权的流程大头都在后端小哥那边 本文的目的就是为了让大家了解一下
  • 360的服务器在哪个文件夹,如何卸载服务器上顽固的360

    前几天接触到一台戴尔R410的服务器 已经尘封两年 忘记密码无法进入系统 系统是经典的windows server 2003 于是直接用量化好暗组优盘系统的U盘启动 在这里要注意下 服务器的按del是没用的 需要按F12 进入后 选择u盘启
  • 服务器装win10稳定吗,win11发布了,那么电脑安装win11稳定吗?win11稳定性介绍

    近期新的win11系统出去后 绝大多数用户都很希望 但也是有许多平稳用户由于还不知道这一系统如何 因此迟疑需不需要升级 实际上 现在是预览版系统镜像系统 或多或少会出现一点bug 但整体而言或是相对稳定 下面大家一起来看看win11平稳吗的
  • 代码随想录训练营第五十九天

    1 下一个更大元素II 题503 循环数组有两种方法 一是用同一个数组拼接成两个数组 实现假循环 二是遍历两遍 用求余的方法 求余的方法更简便 class Solution public vector
  • java 变量的生命周期

    这个要从作用域开始说起 像局部变量的作用域就是他的生命周期 比如if for switch等等这些 出了这个结构就销毁了 方法里的局部变量 在方法调用完就销毁 如果是类的成员变量 在类的相应的对象销毁的时候销毁 上面说的是普通变量 如果是静

随机推荐

  • 卷积处理过程模拟:用Python实现OpenCV函数filter2D等效的卷积功能

    一 引言 在 OpenCV Python 图像平滑处理 卷积函数filter2D详解及均值滤波案例 介绍了filter2D相关的功能及使用 下面老猿用Python numpy矩阵运算以及OpenCV Python的图像基础操作模拟实现一个卷
  • mybatis之执行sql语句

    写在前面 通过这篇文章的分析 已经生成了可以执行的sql语句了 本文来分析SQL语句具体的执行过程 想要系统学习的 可以参考这篇文章 重要 入口 当我们执行一次数据查询的时候 mybatis会通过org apache ibatis exec
  • 4路组相连cache设计_cache基本原理

    为什么要了解cache 在学习linux kernel的过程 经常会cache的概念 从软件层面的page buffer cache 再到硬件层面中CPU的L1 L2 L3 cache TLB 磁盘内部的硬件cache 以及编程时的cach
  • 集合框架--双向链表的模拟实现

    Java中的鏈表 分為三種 1 單向鏈表 由一個節點元素 可以找到相鄰的下一個節點元素 2 雙向鏈表 由一個節點元素 可以找到其相鄰的前 后節點元素 3 循環鏈表 由一個節點元素 可以找到其相鄰的前 后節點元素 由最后一個節點元素可以找到第
  • notepad使用回车与换行

    转载于 http www pythontab com html 2017 linuxkaiyuan 0115 1116 html 一 回车与换行定义 回车 r 本义是光标重新回到本行开头 r的英文return 换行 n 本义是光标往下一行
  • 浅谈Spring中的@Controller注解

    Spring 的 Controller 是单例还是多例 怎么保证并发的安全 controller默认是单例的 不要使用非静态的成员变量 否则会发生数据逻辑混乱 正因为单例所以不是线程安全的 Controller public class S
  • buuctf-misc-小明的保险箱

    小明的保险箱 题目提示四位纯数字密码 但是附件下载下来是jpg文件 猜测是压缩包文件 winhex查看时没有找到什么信息 但是看到了存在txt文件 binwalk一下 把文件放入共享文件夹 上一个博客有提及 binwalk 存在压缩文件 f
  • Java多线程实现的四种方式

    Java多线程实现的方式有四种 1 继承Thread类 重写run方法 2 实现Runnable接口 重写run方法 实现Runnable接口的实现类的实例对象作为Thread构造函数的target 3 通过Callable和FutureT
  • ES6 扩展运算符-将伪数组转换为真正的数组-Array.from()-find()-findIndex()-includes()

    扩展运算符可以将数组拆分成以逗号分隔的参数序列 console把逗号当成console log的分隔符 输出在后台 a b c 扩展运算符的应用 1 数组合并 1 1 1 2 2 将类数组或可遍历对象转换为真正的数组 转换的目的 可以调用数
  • Mybatis

    一 Mybatis简介 1 1 简介 MyBatis 是一款优秀的持久层框架 它支持自定义 SQL 存储过程以及高级映射 MyBatis免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作 MyBatis可以通过简单的 XML 或
  • Welcome to CSDN————My First Time Write Blog

    Welcome to CSDN My First Time Write Blog 蒟蒻到巨佬 遥不可及 的成长计划 新初一记 第一季自我总结 New hand 来自CSP的初一蒟蒻 请求巨佬教博客的正确 标准写法 2019年7月纪中中集训自
  • 使用最小花费爬楼梯

    到达第i级台阶的阶梯顶部的最小花费 有两个选择 最后踏上了第i级台阶 最小花费dp i 再迈一步到达第i级台阶楼层顶部 最后踏上了第i 1级台阶 最小花费dp i 1 再迈两步跨过第i级台阶直接到达第i级台阶的阶梯顶部 所以到达第i级台阶的
  • MATLAB中求图像中某一区域的质心

    在 MATLAB图像处理宝典 秦襄培 编 384页 有 一个regionprops函数 这个实现对二值图的多种描述 以下内容http blog 163 com zwg 1314 126 blog static 353332462011918
  • Android Studio 问题(二)Failed to find Build Tools revision 28.0.2

    在第一次配置使用Android Studio的时候 可能会出现 Failed to find Build Tools revision 28 0 2 此时 只需要根据提示 点击下方的连接进行安装即可 如果不出现下方的链接 点击右上角的 Tr
  • 使用Navicat远程连接服务器上的mysql数据库

    环境准备 服务器中安装mysql数据库 本地安装Navicat Premium 准备好服务器的ip地址 服务器登录密码 mysql数据库的密码等 服务器中mysql忘记密码解决方法 修改服务器中MySQL的登录设置 通过命令vim etc
  • npg收集指定多个文件目录存储大小监控指标

    原理 1 利用netdata的命令参数 collector textfile directory配置从指定文件读取监控指标信息 2 利用linux cron定时任务脚本收集指定目录存储空间大小信息写入 collector textfile
  • SpringBoot整合数据库之如何整合JdbcTemplate?怎么配置JdbcTemplate多数据源(连接多个数据库)?

    1 整合JdbcTemplate 1 1 引入需要的pom依赖
  • 《Java性能调优实战》笔记(一)Java编程性能调优、多线程性能优化

    文章目录 一 Java性能调优概述 1 1 性能调优标准 1 2 制定性能调优策略 二 Java编程性能调优 2 1 字符串 2 2 正则表达式 2 3 ArrayList和LinkedList的选择 2 4 使用Stream提高遍历集合效
  • 毕业设计-基于 BP 神经网络的房地产价值评估研究-matlab

    目录 前言 课题背景和意义 实现技术思路 一 房地产价值评估指标体系构建 二 基于 BP 神经网络的房地产评估模型构建 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕
  • php发送邮箱源码,php 发送邮箱实例代码

    php教程 发送邮箱实例代码 class pop3 public server pop3 126 com 服务器名 public server port 110 服务器端口 public timeout 30 超过多少时间就算连接失败 pu