PHP Mail函數發送html格式郵件

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.