热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHPmail函数发送HTML邮件可使用中文发件人和自定义发件人邮箱

在写PHP代码时,发送邮件着实是一件比较让人郁闷的事情,PHP默认提供的mail函数太弱了,很难琢磨清楚到底该怎么用。虽然也有很一些做得比较好得第三方库,可以提供相当强大的邮件功能,尤其是可以很简单的配置其使用gmail的stmp服务来发送邮件。但是使用这些
 在写PHP代码时,发送邮件着实是一件比较让人郁闷的事情,PHP默认提供的mail函数太弱了,很难琢磨清楚到底该怎么用。虽然也有很一些做得比较好得第三方库,可以提供相当强大的邮件功能,尤其是可以很简单的配置其使用gmail的stmp服务来发送邮件。但是使用这些库通过stmp来发送邮件就不能随意指定发件地址了,也没办法使用到默认mail函数所提供的调用立即返回,后台sendmail从等待列表中自动发送邮件的功能了。再加上有时就是为了写个小脚本,比如每天监控一下服务器状态,然后发送邮件报告的小功能,动用这种第三方库就有点杀鸡用牛刀了。通过不断的搜索+尝试,终于搞定了使用PHP默认mail函数发送邮件时让人模不着头脑的四大金刚:

怎样发送HTML格式邮件

主题给填上中文怎么是乱码啊!

收件人中除了填上收件人的邮件,还要填上名字,而且还是中文的

发件人要填上网站的名字,让人收到邮件的时候不是光秃秃的显示邮件地址,那太搓了,就像下面这张图

闲话不再说了,直接上代码,相信都能看懂的。

// 对邮件地址进行中文的UTF-8编码转化
function format_mail_address($address){
  if(preg_match("|<([^<]+)>|", $address, $matches)){
    $name = mb_substr($address, 0, strpos($address, '<'));
    $name = trim($name);
    $mail = $matches[1];
    $address = "=?UTF-8?B?".base64_encode($name)."?= " . "<$mail>";
  }
  return $address;
}
// 发送html格式的邮件
function html_mail($from, $to, $subject, $body){
  if(preg_match("|<([^<]+)>|", $from, $matches)){
    $from_name = mb_substr($from, 0, strpos($from, '<'));
    $from_mail = $matches[1];
    $from = "=?UTF-8?B?".base64_encode($from_name)."?= " . "<$from_mail>";
  }else{
    $from_mail = $from;
  }
  $headers[] = "From: $from";
  $headers[] = "X-Mailer: PHP";
  $headers[] = "MIME-Version: 1.0";
  $headers[] = "Content-type: text/html; charset=utf8";
  $headers[] = "Reply-To: $from_mail";
  $subject = "=?UTF-8?B?".base64_encode($subject)."?=";
  if(is_array($to)){
    foreach($to as $mail)
      $to_mails[] = format_mail_address($mail);
    $to = join(", ", $to_mails);
  }
  mail($to, $subject, $body, join("\r\n", $headers), "-f $from_mail");
}

函数使用可以参照下面的例子:

html_mail(
    "老谷自言自语 ",
    array(
        "用户A ",
        "用户B "),
    "这是一封测试邮件",
    "
      感谢党,感谢政府,感谢大中华局域网,给我这个发送邮件的机会。
    "
);

PHP mail函数调用sendmail发送邮件,请尽量在linux系统中尝试以上代码

注意:以上代码运行可能存在国内邮箱中收不到的情况,因为可能包含敏感词汇。

如我的测试中,gmail收到邮件并置于垃圾邮箱中,而163没有收到。


推荐阅读
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 本文探讨了程序员这一职业的本质,认为他们是专注于问题解决的专业人士。文章深入分析了他们的日常工作状态、个人品质以及面对挑战时的态度,强调了编程不仅是一项技术活动,更是个人成长和精神修炼的过程。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • CSS Border 属性:solid 边框的使用详解
    本文详细介绍了如何在CSS中使用solid边框属性,包括其基本语法、应用场景及高级技巧,适合初学者和进阶用户参考。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 在日常生活中,支付宝已成为不可或缺的支付工具之一。本文将详细介绍如何通过支付宝实现免费提现,帮助用户更好地管理个人财务,避免不必要的手续费支出。 ... [详细]
  • 本文详细介绍了在Windows系统中如何配置Nginx以实现高效的缓存加速功能,包括关键的配置文件设置和示例代码。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
author-avatar
mobiledu2502919967
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有