如何利用PHP通过mail方法发送邮件【转】

简介:

PHP发送邮件的小程序很简单,不过有些需要注意的地方。先上代码:

01 <?php   
02     $to = "gonnsai@163.com"
03      
04     $user = "Gonn";
05     $date = date("Y年m月d日");
06      
07     $headers  = 'MIME-Version: 1.0' . "\r\n";
08     $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
09     $headers .= "To: $to \r\n";
10     $headers .= "Cc: 252211974@qq.com \r\n";
11     $headers .= 'From: gonnsai@163.com' . "\r\n";
12  
13     $subject = "珠海生活圈"
14     $subject = "=?UTF-8?B?".base64_encode($subject)."?=";
15   
16     $content = '亲爱的'."$user".':'.'<br />'
17     $content .= '<br />'
18     $content .= "感谢您注册珠海生活圈,精彩的生活从珠海生活圈开始!".'<br />'
19     $content .= "在珠海生活圈,您可以:".'<br />'
20     $content .= "查询珠海的商家情况,方便您生活与娱乐。".'<br />'
21     $content .= "了解最近珠海举行的活动,让您的生活更加丰富。".'<br />'
22     $content .= "浏览新闻热点,扩展知识面。".'<br />'
23     $content .= '<br />'
24     $content .= "珠海生活圈 -- 为建成珠海最大的商家数据库而不断努力着。 ".'<a href="http://www.zhuhailife.net" target="_blank">www.zhuhailife.net</a>'.'<br />';
25     $content .= '<br />'
26     $content .= "珠海生活圈团队".'<br />';
27     $content .= "$date".'<br />'
28  
29     $result = mail($to, $subject, $content, $headers); 
30      
31     if($result)
32     {
33         echo '邮件发送成功!';
34     }
35      
36 ?> 

有几个需要注意的地方。如果上面的代码没有 $subject = "=?UTF-8?B?".base64_encode($subject)."?="; 这么一句,你会发现邮件的标题是乱码,而邮件正文却是正确的。邮件头需要先用函数base64_encode(),就是使用 MIME base64 对数据进行编码。标题字符串前加编码类型例如: =?UTF-8?B?。

还有邮件的类型设置为$headers = 'MIME-Version: 1.0' . "\r\n";。

摘wiki的解释:多用途互联网邮件扩展(MIME,Multipurpose Internet Mail Extensions)是一个互联网标准,它扩展了电子邮件标准,使其能够支持非ASCII字符、二进制格式附件等多种格式的邮件消息。这个标准被定义在 RFC 2045、RFC 2046、RFC 2047、RFC 2048、RFC 2049等RFC中。 由RFC 822转变而来的RFC 2822,规定电子邮件标准并不允许在邮件消息中使用7位ASCII字符集以外的字符。正因如此,一些非英语字符消息和二进制文件,图像,声音等非文字消 息都不能在电子邮件中传输。MIME规定了用于表示各种各样的数据类型的符号化方法。 此外,在万维网中使用的HTTP协议中也使用了MIME的框架。

MIME是通过标准化电子邮件报文的头部的附加领域(fields)而实现的;这些头部的附加领域,描述新的报文类型的内容和组织形式。

$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; 当制定类型为 html的时候,邮件正文就可以使用 HTML 的标签了。

几种常见的类型:

  • text/plain(纯文本)
  • text/html(HTML文档)
  • application/xhtml+xml(XHTML文档)
  • image/jpeg(JPEG图像)【PHP中为:image/pjpeg】
  • image/gif(GIF图像)
  • image/png(PNG图像)【PHP中为:image/x-png】
  • video/mpeg(MPEG动画)
  • application/pdf(PDF文档)
  • application/msword(Microsoft Word文件)
  • application/octet-stream(任意的二进制数据)
  • application/x-www-form-urlencoded(使用HTTP的POST方法提交的表单)
  • multipart/form-data(同上,但主要用于表单提交时伴随文件上传的场合)

此外,尚未被接受为正式数据类型的subtype,可以使用x-开始的独立名称(例如application/x-gzip)。vnd-开始的固有名称也可以使用(例:application/vnd.ms-excel)。

parameter可以用来指定附加的信息,更多情况下是用于指定text/plain和text /htm等的文字编码方式的charset参数。MIME根据type制定了默认的subtype,当客户端不能确定消息的subtype的情况下,消息 被看作默认的subtype进行处理。Text默认是text/plain,Application默认是application/octet- stream而Multipart默认情况下被看作multipart/mixed。





本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/archive/2011/05/19/2050616.html,如需转载请自行联系原作者
相关文章
|
10天前
|
JSON PHP 数据格式
PHP解析配置文件的常用方法
INI文件是最常见的配置文件格式之一。
|
2月前
|
Java PHP 数据安全/隐私保护
PHP 面向对象,构造函数,析构函数,继承,方法的重写,接口抽象类,static,final,this,parent,self的异同和作用
本文详细介绍了PHP面向对象编程的一系列核心概念和用法,包括构造函数、析构函数、继承、方法重写、访问控制、接口、抽象类、静态成员、final关键字、以及this、self、parent这三个关键字的异同和作用。通过具体示例代码,展示了如何在PHP中使用这些面向对象的特性,以及它们在实际开发中的应用。
PHP 面向对象,构造函数,析构函数,继承,方法的重写,接口抽象类,static,final,this,parent,self的异同和作用
|
2月前
|
设计模式 算法 PHP
PHP中的设计模式:策略模式的深入探索与实践在软件开发的广袤天地中,PHP以其独特的魅力和强大的功能,成为无数开发者手中的得力工具。而在这条充满挑战与机遇的征途上,设计模式犹如一盏明灯,指引着我们穿越代码的迷雾,编写出更加高效、灵活且易于维护的程序。今天,就让我们聚焦于设计模式中的璀璨明珠——策略模式,深入探讨其在PHP中的实现方法及其实际应用价值。
策略模式,这一设计模式的核心在于它为软件设计带来了一种全新的视角和方法。它允许我们在运行时根据不同情况选择最适合的解决方案,从而极大地提高了程序的灵活性和可扩展性。在PHP这门广泛应用的编程语言中,策略模式同样大放异彩,为开发者们提供了丰富的创作空间。本文将从策略模式的基本概念入手,逐步深入到PHP中的实现细节,并通过一个具体的实例来展示其在实际项目中的应用效果。我们还将探讨策略模式的优势以及在实际应用中可能遇到的挑战和解决方案,为PHP开发者提供一份宝贵的参考。
|
2月前
|
PHP UED 开发者
PHP中处理异常的现代方法
【9月更文挑战第26天】在PHP的世界里,异常处理是代码健壮性的守护神。本文将深入浅出地探讨如何在PHP项目中优雅地处理异常,从而避免程序崩溃并提升用户体验。
|
2月前
|
IDE 安全 网络安全
Xdebug 在不同版本的 PHP 中配置方法有什么不同?
Xdebug 在不同版本的 PHP 中配置方法有什么不同?
171 4
|
3月前
|
PHP 开发工具 git
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
|
2月前
|
PHP 开发者
PHP中的魔法方法
本文将介绍PHP中的一些特殊方法,这些方法以双下划线(__)开头,被称为魔术方法或魔法方法。这些方法在特定情况下会自动调用,例如当尝试访问未定义的属性或调用未定义的方法时。本文将详细讲解几个常用的魔术方法,以及如何在实际应用中使用它们来增强PHP代码的可读性和健壮性。
27 0
|
3月前
|
Java 应用服务中间件 PHP
PHP——调用java文件中的方法
PHP——调用java文件中的方法
56 0
PHP——调用java文件中的方法
|
3月前
|
监控 安全 网络安全
PHP代码审计之简单思路方法
PHP代码审计之简单思路方法
143 1
|
3月前
|
PHP
PHP __call() 方法的一种妙用
PHP __call() 方法的一种妙用
44 0