PHP Mail函数发送html格式邮件

windows系统下mail函数需要配置

1.从http://glob.com.au/sendmail/下载sendmail.zip
2.解压到C:下,例如C:\php\sendmail,最好短路径,长路径名有可能产生问题。
3.修改php.ini如下
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"
4.根据你自己的配置环境修改sendmail.ini。
第一次最好启用debug.log_file,error_logfile,以查看sendmail是否生效。

linux系统中配置安装mail函数

yum -y install sendmail

安装成功

/etc/rc.d/init.d/sendmail start

mail -s “abc” 165482921@qq.com < phpinfo.php

提示

-bash: mail: command not found

晕菜了,那这个mail命令要怎么弄过来呢

yum -y install mailx

就安装好了

mail -s “abc” 165482921@qq.com < phpinfo.php

登邮箱一看,有了,呵呵,原来这两个命令可以这样搞啊

先看一段代码示例

 代码如下 复制代码

$to = 'xxxxx@gmail.com';
$from = 'Solagirl <sola@solagirl.net>';
$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();

如果出现Warning: mail() [function.mail]: SMTP server response: 530 5.7.0 Must issue a STARTTLS command first这个邮件没配置好,我们看文章开头配置方法。

时间: 2024-09-20 00:23:06

PHP Mail函数发送html格式邮件的相关文章

php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法_php技巧

最近遇到一个问题,就是在使用php的mail函数发送utf-8编码的中文邮件时标题出现乱码现象,而邮件正文却是正确的.最初以为是页面编码的问题,发现页面编码utf-8没有问题啊,找了半天原因,最后找到了问题所在.   1.使用 PEAR 的 Mail 类 PEAR 的 Mail 类可以让你选择使用 sendmail 或者 SMTP 方式发信,这样的包装好的接口很好用,你没有必要去自己重新发明轮子. 2.关于headers 中subject 的乱码 不要把任何除了 iso-8859-1 编码之外的

用Jmail控件发送HTML格式邮件,如何使HTML代码引用附件中的图片?

问题描述 用Jmail控件发送HTML格式邮件,如何使HTML代码引用附件中的图片? RT,如何获取附件地址?string cid=mymail.addattachment(filename,true,null),得到的是什么?在HTML代码中要怎么用才能引用成功呢?本人小白一枚,请大神指点 解决方案 jmail发送html格式的邮件Java发送HTML格式的邮件javamail实现向多人发送带附件的html格式邮件

php mail函数发送电子邮件(可带附件)

(可带附件<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en"  代码如下 复制代码 "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equi

利用php中mail函数发送带有附件的邮件

mail函数,发送邮件 语法: mail(to,subject,message,headers,parameters) to 规定邮件的接收者 subject 规定邮件的主题.该参数不能包含任何换行字符 message 规定要发送的消息 headers 规定额外的报头,比如 From, Cc 以及 Bcc parameters 规定 sendmail 程序的额外参数. 碰到的主要问题是乱码问题,刚开始是某些客户端接收邮件时好(比如QQ邮箱,估计带自动那个识别编码)的有些不foxmail.ipad

php中mail函数发送文件失败解决办法

之前的那台服务器转移过来后,发现网站用mail()发送邮件发不了.但是发现sendmail明明已经安装. 如果没有安装sendmail可以执行  代码如下 复制代码 yum install sendmail 对了,主机名要设置一个域名格式的.例如:sangsir.com 不然重启sendmail的时候会特别久才启动起来.(否则要等很久)    代码如下 复制代码 hostname sangsir.com 接着看看sendmail是否正常运行    代码如下 复制代码 service sendma

php mail()函数发送电子邮件代码

语法 mail(to,subject,message,headers,parameters)参数 描述 to 必需.规定 email 接收者. subject 必需.规定 email 的主题.注释:该参数不能包含任何新行字符. message 必需.定义要发送的消息.应使用 lf (n) 来分隔各行. headers 可选.规定附加的标题,比如 from.cc 以及 bcc. 应当使用 crlf (rn) 分隔附加的标题.   parameters 可选.对邮件发送程序规定额外的参数. */ $

JSP与JavaMail之4(发送HTML格式邮件)

js 5.发送HTML格式的邮件 所谓HTML格式,就是超文本格式.你的邮件可以用HTML代码编写,发给对方后,对方收到的将是信息将是超文本,超文本比纯文本好看多了.下以面是在以前例子的基础上修改的程序: <%@ page contentType="text/html;charset=GB2312" %><%request.setCharacterEncoding("gb2312");%><%@ page import="ja

SQL Server中发送HTML格式邮件的方法_MsSql

sql server 发送html格式的邮件,参考代码如下: DECLARE @tableHTML NVARCHAR(MAX) ; -- 获取当前系统时间,和数据统计的时间 set @d_nowdate = convert(datetime,convert(varchar(10),dateadd(day,-1,getdate()),120),120); -- 如果有数据则发送 if exists (select top 1 * from t_table1(nolock) where d_rq=@

SQL Server中发送HTML格式邮件的方法

sql server 发送html格式的邮件,参考代码如下: DECLARE @tableHTML NVARCHAR(MAX) ; -- 获取当前系统时间,和数据统计的时间 set @d_nowdate = convert(datetime,convert(varchar(10),dateadd(day,-1,getdate()),120),120); -- 如果有数据则发送 if exists (select top 1 * from t_table1(nolock) where d_rq=@