使用 PHPMailer 实现邮件的实时发送

2023-12-04 19:01

本文主要是介绍使用 PHPMailer 实现邮件的实时发送,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】
  • 🤟 基于Web端打造的:👉轻量化工具创作平台
  • 💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】

今天我们利用GitHub上20K+星星的项目 PHPMailer 实现一个接收询盘并实时同步到指定邮箱的功能。

实现基本的HTML+CSS

首先我们用 HTML+CSS 做一个简单的 form 表单

<div><div><div>You can contact us at anytime!</div><form action="zuizhong.php" method="post"><input type="text" name="inquiry_lam_name_footer" placeholder='Your Name'><input type="text" name="inquiry_lam_email_footer" placeholder='Your E-mail'><input type="text" name="inquiry_lam_phone_footer" placeholder='Your Phone'><input type="text" name="inquiry_lam_address_footer" placeholder='Your Company Name'><textarea name="inquiry_lam_message_footer" placeholder='Briefly describe your requirement'></textarea><button type="submit">Send</button></form></div>
</div>

加点 CSS

body {font-family: Arial, sans-serif;background-color: #f4f4f4;margin: 0;padding: 0;
}
div {max-width: 600px;margin: 20px auto;padding: 20px;background-color: #fff;border-radius: 5px;box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
div > div {text-align: center;margin-bottom: 20px;
}
form input[type="text"],
form textarea {width: 100%;padding: 10px;margin-bottom: 10px;border-radius: 5px;border: 1px solid #ccc;box-sizing: border-box;
}
form button {padding: 10px 20px;border: none;border-radius: 5px;background-color: #007bff;color: #fff;cursor: pointer;
}
form button:hover {background-color: #0056b3;
}

此时表单显示如下:

在这里插入图片描述

下载 PHPMailer 并配置

Github地址:https://github.com/PHPMailer/PHPMailer

在这里插入图片描述

我是直接下载上面的这个压缩包,下载后解压,层级一定要放对,不然无法调用。在这里插入图片描述

获取邮箱授权码

这里我就以国内使用最多的QQ邮箱为例,当然其他邮箱也都类似,首先登录网页版QQ邮箱,找到设置——账号

在这里插入图片描述

翻到下面找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,点击管理服务,有的可能没开启,需要先开启服务

在这里插入图片描述

点击生成授权码,记得保存一下,后面需要用到

在这里插入图片描述

mail.php 示例代码

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';$mail = new PHPMailer(true);try {$mail->isSMTP();                                           $mail->Host       = 'smtp.qq.com';                     //QQ邮箱用这个,跟我一样就行$mail->SMTPAuth   = true;                                   $mail->Username   = '1836360247@qq.com';                     //换成你的qq邮箱$mail->Password   = 'eqjnv*****achaa';                               //就是刚刚的授权码,用你的替换$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;            $mail->Port       = 465;                                    //默认都是465//Recipients$mail->setFrom('1836360247@qq.com', 'haiyong');$mail->addAddress('208617432@qq.com', 'Joe User');     //添加收件人// $mail->addAddress('208617432@qq.com');               //名字可加可不加,需要多个收件人,在后面增加就行//邮件内容$mail->isHTML(true);                                  $mail->Subject = '来自 海拥 的询盘';$mail->Body    = '这是一封来自 <b>海拥</b> 的询盘';$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';$mail->send();echo '邮件已发送';
} catch (Exception $e) {echo "邮件未发送 Mailer Error: {$mail->ErrorInfo}";
}

测试一下,可成功收到邮件。

在这里插入图片描述
在这里插入图片描述

最终实现代码

zuizhong.php

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';// 获取表单提交的数据
if ($_SERVER["REQUEST_METHOD"] == "POST") {$name = $_POST['inquiry_lam_name_footer'] ?? '';$email = $_POST['inquiry_lam_email_footer'] ?? '';$phone = $_POST['inquiry_lam_phone_footer'] ?? '';$company = $_POST['inquiry_lam_address_footer'] ?? '';$message = $_POST['inquiry_lam_message_footer'] ?? '';// 获取当前时间date_default_timezone_set('Your_Timezone'); // 设置您所在的时区$currentTime = date('Y-m-d H:i:s');// 构建保存到文件的内容$data = "Time: $currentTime\nName: $name\nEmail: $email\nPhone: $phone\nCompany: $company\nMessage: $message\n\n";// 打开或创建一个文件用于写入$file = fopen("user_data.php", "a"); // 'a' 模式表示追加写入// if ($file) {//     // 写入数据到文件//     fwrite($file, $data);//     fclose($file);if ($file) {// 解码 HTML 实体编码,并转换为 UTF-8 编码,然后将数据直接写入文件$decodedData = mb_convert_encoding(html_entity_decode($data, ENT_QUOTES | ENT_HTML5, 'UTF-8'), 'UTF-8');fwrite($file, "\xEF\xBB\xBF"); // 添加 UTF-8 BOM,确保以 UTF-8 编码打开fwrite($file, $decodedData);fclose($file);// 构建 HTML 内容,每个字段后添加 <br> 标签来换行$htmlContent = "<strong>Time:</strong> $currentTime<br>". "<strong>Name:</strong> $name<br>". "<strong>Email:</strong> $email<br>". "<strong>Phone:</strong> $phone<br>". "<strong>Company:</strong> $company<br>". "<strong>Message:</strong> $message<br><br>"; // 使用 <br> 换行,并添加额外的 <br> 产生两行间隔// 发送邮件$mail = new PHPMailer(true);try {//Server settings$mail->isSMTP();                                            $mail->Host       = 'smtp.qq.com';                     //QQ邮箱用这个,跟我一样就行$mail->SMTPAuth   = true;                                   $mail->Username   = '1836360247@qq.com';                     //换成你的邮箱$mail->Password   = 'eqj******haa';                               //你的授权码$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;            $mail->Port       = 465;                                    //不用改,一般都是465$mail->setFrom('1836360247@qq.com', 'haiyong');$mail->addAddress('208617432@qq.com', 'hy2');     $mail->addAddress('haiyong314@163.com', 'hy3');     //收件人,可无限加//邮件内容$mail->isHTML(true);                                  $mail->Subject = 'New Contact Form haiyong.site';$mail->Body    = $htmlContent;$mail->send();echo 'Message has been sent';} catch (Exception $e) {echo "Message could not be sent. haiyong Error: {$mail->ErrorInfo}";}// 如果邮件发送成功或失败,重定向到 contactsave.html 页面header("Location: contactsave.html");exit();} else {echo "Error opening file.";}
}
?>

表单填写内容

在这里插入图片描述

后台 user_data.php 文件内显示
在这里插入图片描述

QQ邮箱收到的内容

在这里插入图片描述

成功接收邮件,统计放入了 user_data.php 文件,并显示出了此时时间。到这里我们就完整实现了使用 PHPMailer 进行邮件的实时发送,希望本篇文章能帮助到大家。

⭐️ 好书推荐

《数学之美》

在这里插入图片描述

【内容简介】

本书从几个著名数学问题出发,深入浅出地讲解了与我国初高中的教学实际紧密联系的数学知识,并把知识内容与数学核心素养结合起来。在这条知识主线的周边,穿插介绍知识内容的历史发展过程,对相关数学分支在数学史上的地位进行深入思考,并辅之以数学文化、趣味知识、数学游戏、数学悖论等茂盛枝叶。全书共6章,第1章介绍无处不在的杨辉三角;第2章介绍当我们谈论正方体时,我们能够谈论些什么;第3章介绍了神奇的 2;第4章介绍斐波那契数列与黄金分割;第5章介绍圆锥曲线面面观;第6章介绍感悟数学的魅力与威力。

📚 京东购买链接:《数学之美》

《光的共鸣:人像板绘原理与技法》

在这里插入图片描述

【内容简介】

本书共6章,以颇受插画师青睐的Procreate软件为主要工具,带领读者提升人物绘画创作的技能和技巧。书中包括对比例与结构、光影二分法、直接画法、色彩与光影的关系处理、绘画的心得与技巧等的介绍,内容涉及绘制头部时不同角度的比例表现、平光和阴天光线的表现方法、通透的皮肤质感表现方法、头发的层次和质感表现方法、二次元绘画的表现方法等,讲解分析了30余个典型案例,并在第 6 章展示了大量供读者学习借鉴的光影表现作品。

📚 京东购买链接:《光的共鸣:人像板绘原理与技法》

这篇关于使用 PHPMailer 实现邮件的实时发送的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/454557

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo