版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
7.4发送邮件实现发送邮件需要的操作邮件编辑完成,点击“发送”按钮时必须将邮件信息存入到数据库中,若是邮件中包含附件,还需要将附件保存到文件夹upload中。需要创建数据表:emailmsg该数据表要存放邮件所有信息,包括邮件序号、发件人、收件人、主题、内容、附件信息、收发日期、是否删除邮件、是否阅读邮件等。需要创建文件storeemail.php7.4.1创建数据表emailmsg数据表emailmsg结构数据表emailmsg列说明定义邮件序号是为了在以后打开邮件和删除邮件时提供索引值。收件人长度为1000个字符,允许发送邮件时指定多个用户接收;主题长度限制在200个字符之内;邮件内容可以是空的;附件名称信息,记录当前邮件中包含的所有附件的名称信息,为数据表中的邮件记录和upload文件夹中的附件建立关联;必须允许为空,表示用户可以不用选择上传附件。是否删除邮件,记录当前邮件是否已经被用户选择了删除,未删除的记为0,被删除的邮件则记为1,可在“已删除”邮件列表中显示,用户可从已删除邮件列表中再次选择之后将其彻底删除数据表emailmsg列说明是否阅读邮件,用于记录某个用户是否已经阅读过某封邮件,若阅读过,则以“zhangmeng@163.com;”形式记录阅读邮件的用户账号“zhangmeng”,这样在“zhangmeng”的收件箱中,这封邮件的超链接不再显示为加粗状态。如果某个邮件的多个收件人都阅读过该邮件,则将多个收件人的账号信息都记录在该邮件记录的readflag列中,如“zhangmeng@163.com;lidong@163.com;”,每个账号信息都要以分号结束。邮件记录中readflag列值的修改是在某个用户初次打开这封邮件时进行的创建数据表emailmsg【例7-1】创建create_emailmsg.php文件,在连接MySQL成功并打开数据库email之后,定义SQL语句,创建数据表emailmsg,在创建语句的后面需要使用defaultcharset=utf8设置数据表中使用的字符集编码执行SQL语句,若是创建成功,则输出“数据表emailmsg创建成功”,否则输出“数据表emailmsg创建失败”。7.4.2保存邮件信息保存附件说明说明:设计的163邮箱项目中,为了降低其复杂程度,将所有人发送的所有邮件中的附件都保存在文件夹upload中处理同名附件为了尽可能避免不同用户发送的同名附件互相冲突,采取的措施是向upload文件夹中保存附件时,将附件名称开始处都增加一个放在圆括号中的随机数,随机数的范围是0到100,000;例如,若是上传的附件有两个,分别是"a.doc"和"b.ppt",假设系统为文件a.doc产生的随机数是42897,为文件b.ppt产生的随机数是1942,则在文件夹upload下面要保存的文件分别是"(42897)a.doc"和"(1942)b.ppt"思考问题一个用户可以添加的附件最多有10个,所有附件除了要保存到文件夹upload中,还要将附件信息保存到数据表emailmsg的attachment列中,如何准备要保存到该列中的数据?保存在attachment列中的附件名称信息中包含开始处增加的随机数标识、附件名称和结束处增加的大小信息三个部分的内容,最后再添加一个分号,所以在保存之前,需要将这三部分的内容连接在一起并以分号结束;例如,若是上传的附件分别是“a.doc”和“b.ppt”,文件大小分别是1.24kB和2.56kB,系统为两个文件产生的随机数分别是42897和1942,则保存到attachment列下面的信息是"(42897)a.doc(1.24kB);(1942)b.ppt(2.56kB);"思考问题页面中有10个文件域元素,如何确定用户使用哪些元素上传了附件?使用for循环结构,一共循环十次,每循环一次,获取一个文件域中的附件名称信息,然后判断该附件名称是否为空,只要不为空,就说明该文件域元素上传了附件编写代码对附件信息进行处理创建文件storeemail.php将所有附件按照要求保存到文件夹upload中,同时准备好要保存到数据表中的附件信息,使用变量$attachment保存关联storeemail.php文件在writeemail.php文件<form>标记的action属性中关联storeemail.php文件,当用户点击发送按钮时运行该文件修改文件,循环结束时输出$attachment指定一个收件人,发送一封带有两个附件的文件,观察文件夹upload中的结果和浏览器中输出的结果,进一步理解对附件的处理方案保存邮件信息修改文件storeemail.php第一步:获取发件人、收件人、主题、内容和收发日期信息,分别使用变量$sender、$receiver、$subject、$content和$datesorr保存第二步:连接数据库,设计插入语句将邮件信息保存到数据表emailmsg中将邮件的信息保存到数据表emailmsg中说明:此处因为不需要对自动增长的emailno列、是否删除列和是否阅读列添加列值,所以需要将其余列名称都写在SQL语句中,并按照指定名称的顺序给定列值,所有的列值,无论何种类型都使用单引号定界7.4.3实现系统退信功能在发送邮件之后,若是邮件中指定的某个接收者账号在usermsg表的emailaddr列中不存在,系统应该自动给发送方退信,用于提示发送方所发送的邮件并没有真正发送成功。1.系统退信功能实现说明因为发送方发送邮件时指定的接收者可能是多个用户,对这些使用英文分号连接在一起的账号,首先要使用英文分号作为分割符,将它们一个个分离,然后使用循环结构分别判断其是否是已经注册过的账号;另外,因为接收者账号信息中包含了“@163.com”,而存放用户账号信息的usermsg表中的emailaddr列值内并不包含“@163.com”,所以在判断某个接收者账号是否存在之前,必须将账号信息中包含的“@163.com”信息截取掉。无论是要进行字符串信息的分割,还是要进行字符串的截取,都需要使用字符串分割函数explode()完成。2.函数explode()函数作用:将一个长的字符串按某个指定的字符分割成多个字符串,并且按照顺序组成一个数组函数格式:explode(参数1,参数2);参数1指定用来分割字符串的字符,可以是一个字符,也可以是一个字符串;参数2指定被分割的字符串;思考问题:该函数与哪个函数完成的功能相反?函数explode()的用法用法一:$array=explode(参数1,参数2)返回结果$array是一个数组,可以使用数字索引形式访问数组元素,$array[0]表示其中第一个元素;用法二:list(变量1,变量2,变量3,…)=explode(参数1,参数2)使用list(变量列表)形式保存数据,按分割后的顺序将字符串依次保存到指定的变量中,若是变量个数少于分割后字符串的个数,则丢弃后面的字符串,相当于进行串的截取操作。函数explode()应用举例一假设存在字符串变量$str的内容是"Howareyou",要使用空格分割该串,分割后的结果使用数组$strGrp存放$str="Howareyou";$strGrp=explode("",$str);函数explode()应用举例二创建文件explode.php,定义字符串变量$receiver为"zhanglihong@163.com;liminghua@163.com;liuyuping@163.com",将该串使用分号分割之后分行输出每一部分的内容思考问题:若是要将上例分割之后每个账号字符串中的“@163.com”去掉之后再输出,如何实现?解决问题判断某个收件人账号是否存在获取收件人信息后(这里是指完整的username@163.com的形式),使用explode()函数截取其中的用户名信息(即去掉@163.com部分),在数据表usermsg的列emailaddr中查询该用户名信息,找到,则说明收件人账号存在,否则说明不存在。思考问题系统退信时,发件人、收件人、主题、内容分别要如何设置?发件人设置为"system",收件人设置为原邮件的发件人,主题设置为“系统退信”,内容设置为“你
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 语文试卷分析表统编版一年级上册期中
- 云南小学期末试卷语文
- 装饰装修改造工程施工组织设计范文
- 吉林大学2026年9月考试《会计案例》作业考核试题
- 第六届校园十佳歌手主持稿
- 市场部组织架构
- 《英语教师行动研究》读书笔记
- 人美版高中《美术鉴赏》第9课形神兼备迁想妙得-中国古代绘画撷英教学设计
- 建筑垃圾收集和转运安全施工保障措施
- 六年级语文线上教学工作总结
- 河北苗木灌溉施工方案(3篇)
- 【方案】2026工业企业和园区数字化能碳管理中心解决方案
- 旅顺口:山海交响中的历史印记
- 2026中国细胞培养助剂行业运行状况与投资盈利预测报告
- 2026湖南长沙市生态环境局所属事业单位公开招聘普通雇员笔试备考题库及答案解析
- 《预算执行常态化监督发现问题纠偏整改操作指南(试行)》
- 2026年高考生物全真模拟试卷及答案(共五套)
- 2024新外研社版英语八年级下单词汉译英默写表(开学版)
- (2026版)患者十大安全目标图文(2篇)
- 轻食市场行业风险分析报告
- 工作心态培训
评论
0/150
提交评论