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這個郵件沒配置好,我們看文章開頭配置方法。