使用PHP Mail发送邮件,可以选择纯文本格式或者HTML格式,HTML格式更加吸引眼球因此应用越来越广泛,但使用HTML格式有一定的劣势[1],在发送HTML格式的邮件时最好同时发送纯文本格式,这样使用不支持HTML的旧式电子邮件客户端的用户依然可以读取邮件内容。这里用到的方法叫多部分消息。

先看一段代码示例$to = 'xxxxx@gmail.com';

$from = 'Solagirl ';

$subject = 'Mail Subject';

$message = 'html content (with html tags)';

//定义边界,边界值尽可能唯一

$semi_rand = md5(time());

$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

//多部分消息的header声明与单一格式不同

$headers .= "MIME-Version: 1.0\n" . "Content-Type: multipart/alternative; boundary=\"{$mime_boundary}\"";

$headers .= "From: $from\n";

//多部分消息 - HTML版本

$mailbody = "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"utf-8\"\n" .

"Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";

//多部分消息 - 纯文本版本

$mailbody .= "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"utf-8\"\n" .

"Content-Transfer-Encoding: 7bit\n\n" . strip_tags($message) . "\n\n";

//多部分消息结束

$mailbody .= "--{$mime_boundary}--";

mail($to, $subject, $message, $headers);

从上面的例子看出,要使用多部分消息发送电子邮件,header与发送单一格式邮件不同,需要声明发送的内容是multipart并定义边界(boundary)Content-Type: multipart/alternative; boundary="{$mime_boundary}"

这就告诉电子邮件客户端,应该在消息中查找额外的Content-type信息,其中包含边界信息。边界把消息分隔为多个部分,它以两个短横线(–)开头,并且位于消息的开头、各部分之间和消息的结尾。这个边界的内容并不重要,关键是尽可能使之唯一,所以它不可能是消息中重复的值,所以可以使用符号、数字和字母的任意组合,许多人选择使用rand()或md5()散列,这并不重要。使用什么方法完全取决于设计人员。[2]

如果使用PHPMailer发送邮件,只需要简单的代码就可以实现多部分消息,看下面代码段[3]$mail->Body = $body;

//$mail->AltBody存储纯文本版本

$mail->AltBody = strip_tags($body);

$mail->WordWrap = 50; // set word wrap

$mail->IsHTML(true);

$mail->MsgHTML($body);

$mail->Send();

[2] 《Web开发入门经典——使用PHP6、Apache和MySQL》第11章 – 发送电子邮件

php 读取邮件内容,PHP Mail:使用纯文本和HTML格式发送Email(多部分消息)相关推荐

  1. PHP使用imap读取邮件内容,2018可用

    本文以QQ邮箱为例,已验证可以成功读取邮件内容,这里用到一个类,如下. <?php /**** @package Application* @author songhui@diaojia.com ...

  2. html邮件和纯文本邮件区别,邮件营销必读系列五--纯文本和HTML邮件类型——哪一种邮件类型更适合你?...

    仍然会除去你的代码中的很多所谓的"冗余元素",所以,如果不符合邮件服务商的反垃圾邮件要求,无论你的邮件设计人员投入了多少时间,花费了多少精力,邮件设计得有多精美,最后收件人看到的可 ...

  3. python自动读取邮件_Python3读取邮件内容

    登录邮箱并读取原始邮件 使用imaplib库实现邮箱登录,所以需要先导入库import imaplib,然后利用imaplib库中的方法登录邮箱并读取邮件 def get_mail(email_add ...

  4. python 读取邮件内容_Python 如何提取邮件内容

    欢迎关注[无量测试之道]公众号,回复[领取资源], Python编程学习资源干货. Python+Appium框架APP的UI自动化. Python+Selenium框架Web的UI自动化. Pyth ...

  5. python 读取邮件内容_利用Python imaplib和email模块 读取邮件文本内容及附件内容...

    python使用imap接收邮件的过程探索 https://www.cnblogs.com/yhlx/archive/2013/03/22/2975817.html #! encoding:utf8 ...

  6. python 读取邮件内容_python获取邮件内容(邮件内容为html)

    用python获取邮件内容比较简单,直接用现成的imap和pop3包即可,但是有时候邮件的内容不是plainText而是html甚至是一个url链接,原本的操作流程是点击url获取内容(比如csv等等 ...

  7. java邮箱格式_JavaMail入门:创建纯文本、HTML格式的邮件

    转自:http://haolloyin.blog.51cto.com/1177454/353849/ 在 http://java.sun.com/products/javamail/ 下载了 Java ...

  8. python自动定时读取outlook邮件内容

    第一次实习,什么也不会,公司让写一个自动定时读取邮件的代码,只好自己去网上搜,踩了很多坑,现在终于弄好了,在这里记录一下,也希望能给需要的人一点帮助. 首先就是登陆邮箱并读取邮件,outlook的话一 ...

  9. python读取邮件标题_Python连载57- 邮件头和主题、解析邮件

    一.添加邮件头,抄送等信息 1.mail["From"]表示发送者信息,包括姓名和邮件 2.mail["To"]表示接收者信息,包括姓名和邮件地址 3.mail ...

最新文章

  1. 2006上半年程序员级试题答案
  2. oracle中col 的用法,Oracle All
  3. 重复数据删除将成标配功能
  4. 【儿童成长心理学】第一章 引言
  5. linux64位ioremap函数,linux操作系统中的ioremap函数详解
  6. SDK Manager failed to install 'java.exe' locking directory
  7. sql数据库简单增删改查
  8. 软件构造学习笔记-第十二周
  9. java责任链模式审批请假_Java使用责任链模式处理学生请假问题详解
  10. java 责任链模式 链表_责任链模式的实现及源码中应用
  11. 05MySQL基本操作
  12. 搜索引擎的那些事(多线程web遍历)
  13. 【CodeForces - 707B】Bakery(思维水题)
  14. 常用图片jpg png jpeg gif等格式介绍
  15. xshell上传文件到linux很慢,XShell上传文件到Linux服务器上
  16. ITween操作API
  17. 【比赛题解】第十一届蓝桥杯青少组省赛(中级组)详细题解
  18. 我来告诉你,一个草根程序员如何进入BAT
  19. 第1章 微处理器、微型计算机、微型计算机系统的区别
  20. 小程序中时间计算(时、分、秒)

热门文章

  1. proxmox安装linux无法上网,Proxmox VE安装教程
  2. matlab 离散偏微分,有限差分法求解偏微分方程MATLAB.doc
  3. 调用百度api制作旅游轨迹图
  4. Python——读取raw格式文件
  5. 单片机(AT89C51)按钮控制LED灯实现流水灯,闪烁流水灯
  6. WordPress主题 大前端 阿里百秀 XIU 小清新CMS高级主题[更新v3.2]
  7. Linux 文件搜索神器 find 实战详解,建议收藏!
  8. 大一 JAVAOOP-T2 面向 对象 进阶- 实践任务指南(美和易思)
  9. 微机原理与接口技术 小题(河北专升本计算机)
  10. SQL Server 字段提取拼音首字母