大家好,今天给各位分享php下如何轻松快速的发送邮件的一些知识,其中也会对进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
phpMailer的特点:
1. 电子邮件中包含多个TO、CC、BCC 和REPLY-TO。 2. 该平台应用广泛,支持的SMTP服务器包括Sendmail、qmail、Postfix、Gmail、Imail、Exchange等。 3. 支持嵌入图像、附件和HTML电子邮件。 4、可靠、强大的调试功能。 5.支持SMTP认证。 6. 自定义电子邮件标题。 7. 支持8bit、base64、二进制和quoted-printable编码。 phpmailer安装或下载方法:
从github下载: https://github.com/PHPMailer/PHPMailer/
就这三个文件
如果实在下载不了,可以直接问我。没关系。
PHP 支持套接字和openssl 扩展。这个错误会及时得到解决。
此时,我们就可以将压缩包解压到我们的项目中了。对于PHP来说,如果我们使用一个框架,比如think PHP,那么我们把它放在extend目录下,如下图:
思考PHP
拨打时请使用以下:
如果你不使用框架,那么将其放在公共三方参考目录中或者直接将其放在与你当前的php文件同一目录中。没关系。正确写出参考路径即可,如下图:
拨打时,以下是:
相信这时候大家就不会有任何问题了。我们重点关注代码级问题:
在发送之前您需要有自己的邮件服务器。测试的时候,其实使用自己申请的免费邮箱是最方便的。您不需要自己构建服务器。您可能需要配置邮箱的SMTP服务。大多数公共邮箱(163、qq等)的安全性默认是关闭的。
网易邮箱配置如下图:
QQ邮箱相关配置如下图:
我们在调试的时候,一般都会使用免费的邮件服务器,QQ或者163。在使用QQ邮箱的时候,人们往往会忽略一个问题,那就是QQ邮箱使用的是465端口,使用的是SSL协议,所以我们配置:如下
请注意,该密码是一个单独的授权码,而不是您的电子邮件密码。有人被困在这里了,哈哈
如果使用其他邮箱,可以使用25端口,但是这个有一个特别的坑,就是阿里云默认25端口是关闭的,所以没办法,要么不使用25端口,要么向阿里云申请25端口,或者更换服务器供应商,如IDC等,
如果您使用端口25,则不需要SSL 协议。
具体代码就是写这个和不写这个的区别。
还有同时发送多人、多个附件的问题:
发送多人、流程参数、循环
发送附件、工艺参数、循环
确实没什么可说的,但是附件路径必须直接指向您的二进制文件。相对路径和绝对路径都可以,但不是网络图片链接或第三方图片服务器链接,比如七牛云、阿里云oss。这只能先做。只需将其下载到本地或服务器即可。注意个人下载授权问题,你知道的。
这一步就差不多完成了,只要输入代码:
/**
* 发送邮件(重构/支持附件)
*/
//参数包含接收邮箱地址,可以是单人,也可以是多人。字符串和数组都很好。由你决定。
//主题,不用多说了
//内容,可以是html,自动识别
//附件,注意事项上面已经说了
//无需对第三方包进行任何修改
公共静态函数send_email($sendTo, $titleName, $content, $file_list=[]) {
$电子邮件=数组(
‘charset’=’UTF-8’, //字符编码
‘host’=’smtp.leju.com’, //企业邮局域名
‘端口’=25, //端口
‘用户名’=”, //邮件发件人
‘密码’=”, //密码
);
require_once ‘Phpmailer/phpmailer.php’;
$mail=new PHPMailer(); //实例化
//附录
if (!empty($file_list)) {
foreach ($file_list as $key=$value) {
$mail-AddAttachment($value); //添加附件
}
}
$标题名称=$标题名称;
//使用SMTP发送
$mail-IsSMTP();
//设置邮件的字符编码
$mail-CharSet=$email[‘字符集’];
//企业邮局域名
$mail-Host=$email[‘host’];
$mail-端口=$email[‘端口’];
//启用SMTP认证功能
$mail-SMTPAuth=true;
//邮件发件人的用户名(请填写完整的邮件地址)
$mail-用户名=$email[‘用户名’];
//邮件发送者密码(授权码)
$mail-密码=$email[‘密码’]; //修改为自己的授权码
//电子邮件发件人的电子邮件地址
$mail-From=$email[‘用户名’];
//发送邮件的人的头衔
$mail-发件人姓名=”;
//做一些处理,可以有多个收件人,也可以只有一个
//收件人地址可以替换为您想要接收电子邮件的任何电子邮件地址。格式为AddAddress(‘收件人电子邮件’, ‘收件人姓名’)
如果(!空($sendTo)){
$sendTo=爆炸(‘,’, $sendTo);
foreach ($sendTo as $k=$v) {
$mail-AddAddress($v, substr($v, 0, strpos($v, ‘@’)));
}
}
//回复地址
$mail-AddReplyTo($email[‘用户名’], ”);
//设置邮件格式为HTML //是否使用HTML格式
$mail-IsHTML(true);
//邮件标题
$mail-主题=$titleName;
//邮件内容
$邮件正文=$内容;
//附加信息,可省略
$mail-AltBody=”;
if (!$mail-Send()) {
$mail_return_arr[‘code’]=false;
$str=’发送邮件失败。’;
$str .=’错误原因: ‘ . $mail-ErrorInfo;
$mail_return_arr[‘info’]=$str;
} 别的{
$mail_return_arr[‘代码’]=true;
$str=’邮件发送成功’;
$mail_return_arr[‘info’]=$str;
}
返回$mail_return_arr;
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/137815.html
用户评论
三年约
这篇博文真是太棒了!我一直都在找一个快速高效实现 PHP 邮件发送的方法,刚好遇到了你的这篇教程。步骤清晰易懂,代码简洁明了,简直完美!已经成功运行测试了,非常感谢分享!
有9位网友表示赞同!
回忆未来
邮件发送虽然功能相对简单,但细节还是有很多需要注意的,比如服务器配置、安全问题等等。这个博客讲的比较全面,不仅有基础实现方法,还提到了常见问题和解决方案,真的很贴心!
有6位网友表示赞同!
青衫故人
我使用的是其他的 PHP 框架,不知道这种方法是否适用。或许可以多分享一些不同场景下的发送方式,比如异步发送、带有附件等,能更丰富一点。
有6位网友表示赞同!
桃洛憬
虽然代码示例简洁,但对于新手来说可能有点难以理解。能否详细解释一下每个部分的含义和作用?例如 `Mail::to()` 和 `Mail::send()` 这两个方法分别做什么?
有7位网友表示赞同!
念旧是个瘾。
我试过这个方法发送邮件,但是收件箱始终没有收到!会不会是 PHP 的环境配置问题?还需要进一步了解一下服务器的相关设置。
有14位网友表示赞同!
经典的对白
这篇文章给了我很好的启发!原来邮件发送可以用这么简单的方式完成。之前一直以为需要配置很复杂的 SMTP 服务器,真是太省事了!
有16位网友表示赞同!
怪咖
这个方法确实快捷,但是对于安全性方面可能存在一些隐患。比如,如果邮件内容中包含敏感信息,很容易被其他人截获。建议在评论区分享一些关于邮件安全性的知识和建议!
有11位网友表示赞同!
掉眼泪
我目前使用的是 Laravel 框架,不知道能否直接应用这个方法。或者 Laravel 中有没有更便捷的邮件发送方式?感觉 Laravel 本身好像就自带了邮件发送功能。
有7位网友表示赞同!
伤离别
这篇博文真的太棒了!将各种问题和解决方案都概括地非常到位,读完后感觉自己对 PHP 邮件发送有了更加深入的理解。
有16位网友表示赞同!
漫长の人生
这个方法简单易用,但是如果邮件量比较大时,这种方式会不会效率较低?有没有什么更高效、更专业的邮件发送方案可以推荐?
有8位网友表示赞同!
此生一诺
我尝试了一下,发现这个方法在某些情况下会出现编码问题。比如,中文邮件无法正常显示。是否需要进行一些额外的处理来解决这个问题?
有8位网友表示赞同!
孤独症
感觉这种快捷的方法比较适合简单的应用场景,对于复杂的环境下可能需要考虑其他方案才能确保稳定性。
有18位网友表示赞同!
娇眉恨
博客写的很详细,对新手非常友好,一步步的指导让我顺利完成了邮件发送功能!感谢作者分享这些宝贵的经验!
有19位网友表示赞同!
命里缺他
如果能够加上一些常见错误处理和调试方法,会更加完善。
有6位网友表示赞同!
愁杀
我觉得文章中应该提到一下,使用这种方法发送邮件时需要注意安全问题,避免敏感信息的泄露。
有11位网友表示赞同!
暮光薄凉
对于不同邮件服务的兼容性是否需要考虑?文章提到的一些代码片段是否适用于所有邮件服务?
有13位网友表示赞同!
一生只盼一人
这个方法的实现效率怎么样?对于大量邮件发送来说,会不会比较耗费资源?
有8位网友表示赞同!
北染陌人
很感谢作者分享这些知识!我之前也想学习如何用 PHP 发送邮件,但一直都没找到一个简单的方法。这篇博客彻底解决了我的疑问!
有13位网友表示赞同!