PHP 下发送 Email


本文将会讲述 PHP 下发送 Email 的功能。一般上要在 PHP 下发送电邮,会使用内建的 mail() 函式,除非有特定需要才会使用 socket 发送电邮的方法。今天会先从 mail() 函式入门。

php.ini 设定
要让 web server 可以发送 email,先要打开 php.ini 修改 sendmail_path 及 SMTP,如果是用 web hosting 的服务则不用理会这点。

如果使用的是 Unix Like 环境,一般会在 sendmail_path 设定:如果在 win32 环境,便需在 SMTP 里面填上可以作 rely 的 email server。

设定好 php.ini 后需要 restart web server。

mail() 基本语法
要在 PHP 下发信十分简单,只要使用内建的 mail() 函式即可。而需要发送一封 email,最少需要 “收件者电邮地址”, “邮件主旨” 及 “邮件内容” 三项资料,以下例子是发送一封邮件到 testing@testing.com,主旨是 “testing email”,内容是 “This is a testing!”:

P.S. 如果需要在 email 内换行,可使用 “\n” 字符。

当使用以下方法发送 email 成功后,可能你会看到一个大问题,就是收件者收取 email 后,会寄件者及寄件者电邮那里会使用 web server 默认的资料,要改进这点,便需要在使用 mail() 函式时加入第四个参数 — header。以是语法与以上相同,不是之处是会设定 email 寄件者及寄件者 email:

以上例子会使用 My Name 作为寄件者名称,而 me@mydomain.com 会是寄件件者电邮。

发送 HTML 邮件
以上所介绍的方法会发送纯文字的邮件,对于一般应用也可应付,当需要作加入图片或定义字体大小就不可以了,但直接在邮件内容打上 html 又会直接给收件者显示 html 标记语言,而不是预期的效果。

其实使用 mail() 函式发送 HTML 邮件,关键在 header 参数。请看以下例子,大致内容与上面的例子一样:

testingThis is a html email.';

mail("testing@testing.com", "testing email", $email_content, "From:My Name\nContent-Type:text/html");
?>

你可以看到,以上例子的邮件内容使用了 html 标记语言,而在 header 参数那里加入了 "Content-Type:text/html"。

Tags:

Leave a Reply