2015-08-26 71 views
0

我能夠發送僅包含文本的電子郵件,但沒有一個腳本正在發送HTML。我有認證關閉,谷歌應用程序是基於服務器的IPPHP Pear Mail HTML版本

$message = 'Blah blah blah'; 


require_once "Mail.php"; 
$from = "mycompany <[email protected]>"; 
$to = $fName.$lName." <".$email.">"; 
$subject = "Hello from mycompany!"; 
$body = 

'Dear '.$fName.', 

Thank you for your interest in mycompany. We have received your inquiry and will contact you within 24 hours. 

Thanks, 

Timothy Elliott - Owner/CEO mycompany'; 

         $host = "tls://smtp-relay.gmail.com"; 
         $port = "465"; 
         $username = ""; 
         $password = ""; 
         $headers = array (
         'From' => $from, 
         'To' => $to, 
         'Subject' => $subject); 
         $smtp = Mail::factory('smtp', 
         array ('host' => $host, 
          'port' => $port, 
          'auth' => false, 
          'username' => $username, 
          'password' => $password)); 
         $mail = $smtp->send($to, $headers, $body); 

if (PEAR::isError($mail)) { 
echo("There was an error, please try again."); 
} 

此代碼工作得很好驗證,但我不能將它作爲發送HTML郵件。

+0

有沒有簡單的方法來與梨郵件發送HTML格式的郵件。你可能會考慮使用類似http://swiftmailer.org/或http://framework.zend.com/manual/current/en/modules/zend.mail.introduction.html – bspellmeyer

+0

哦,很高興知道!我在共享服務器上,但無法安裝任何腳本:(Dang fatcow !! :( –

+0

)無需安裝。您可以將Zend Mail和Swift Mailer與您自己的PHP腳本並行上傳,不需要任何特殊設置 – bspellmeyer

回答

2

使用PEAR Mail很容易 - 只需使用PEAR Mail_Mime編碼外發電子郵件的HTML部分即可。

Here's an example of how.

擴大你的代碼這一點,它應該是這個樣子:

<?php 
require_once "Mail.php"; 
require_once "Mail/mime.php"; 

$from = "mycompany <[email protected]>"; 
$to = $fName.$lName." <".$email.">"; 
$subject = "Hello from mycompany!"; 
$html = <<< HTML 
<b>Dear $fName</b>, 
<p> 
Thank you for your interest in mycompany. We have received your inquiry and will contact you within 24 hours. 
</p> 
Thanks,<br/> 

<i>Timothy Elliott - Owner/CEO mycompany</i> 
HTML; 

$host = "tls://smtp-relay.gmail.com"; 
$port = "465"; 
$username = ""; 
$password = ""; 
$headers = [ 
    'From' => $from, 
    'To' => $to, 
    'Subject' => $subject 
]; 

$crlf = "\n"; 
$mime = new Mail_mime(['eol' => $crlf]); 
$mime->setHTMLBody($html); 
$body = $mime->get(); 
$headers = $mime->headers($headers); 


$smtp = Mail::factory('smtp', 
    [ 
    'host' => $host, 
    'port' => $port, 
    'auth' => false, 
    'username' => $username, 
    'password' => $password 
    ] 
); 
$mail = $smtp->send($to, $headers, $body); 

if (PEAR::isError($mail)) { 
    echo("There was an error, please try again."); 
} 
+0

html部分中的某些內容會給我PHP錯誤...我的腳本結尾處出現意外結束 –

+0

如果您'使用heredoc符號來設置HTML,您需要確保結束標記「HTML;」位於行首的起始位置,並且之前沒有空格/製表符。 – kguest