php发送邮件的小程序很简单,不过有些需要注意的地方。先上代码:
有几个需要注意的地方。如果上面的代码没有 $subject = =?utf-8?b?.base64_encode($subject).?=; 这么一句,你会发现邮件的标题是乱码,而邮件正文却是正确的。邮件头需要先用函数base64_encode(),就是使用 mime base64 对数据进行编码。标题字符串前加编码类型例如: =?utf-8?b?。
还有邮件的类型设置为$headers = 'mime-version: 1.0' . rn;。
摘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' . rn; 当制定类型为 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.bkjia.com/phpjc/752430.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/752430.htmltecharticlephp发送邮件的小程序很简单,不过有些需要注意的地方。先上代码: ?php $to = gonnsai@163.com; $user = gonn;$date = date(y年m月d日);$headers = 'mim...