2012-02-14 27 views
0

我試圖將一些代碼從一個PHP教程中展示出來,該教程展示瞭如何使一個非常基本的PHPMailer表單發送一個純文本電子郵件到一個郵件列表。簡單性正是我想要的大部分,因爲有幾個人會使用這種形式,儘管我想包括在表單中使用HTML的能力。因此,例如,我想使用<center>標籤或插入托管圖像<img src="www.link.com/img.jpg">以使電子郵件更豐富一點。帶有textarea格式和html的PHPMailer

目前,我無法弄清楚如何啓用html嵌入。如果我把HTML代碼轉換成一種形式,它只是簡單地輸出代碼等<b><i>text</i></b>那裏,因爲我想顯示爲剛剛電子郵件:文本

我想這可能是IsHTML(True);可變的,但當我發送電子郵件時,一切似乎都正常。如果我擺脫<input type並將其更改爲<span,那麼電子郵件只是空白。

這裏是我工作過的原代碼:http://yorkspace.wordpress.com/simple-php-mailing-list/

這裏是sendmail.php,這是其中一個去編輯郵件,預覽,然後發送:

<?php 

require "maillist-settings.inc.php"; 
if ($_POST['preview']) 
{ 
    $email_array = $_POST['emaillist']; 

    if (is_array($email_array)) 
    { 
     $subject = $_POST['emailtitle']; 
     $message = $_POST['emailmessage']; 
     $bcc_list = implode(", ", $email_array); 

     echo "<table><tr><td>";  
      echo "<form action=\"" . $_SERVER['SCRIPT_URL'] . "\" method=\"POST\">"; 
      foreach ($email_array as $email_address) 
      { 
       echo "<input type=\"hidden\" name=\"emaillist[]\" value=\"" . $email_address . "\">"; 
      } 
      echo "<input type=\"hidden\" name=\"emailtitle\" value=\"" . $subject . "\">"; 
      echo "<input type=\"hidden\" name=\"emailmessage\" value=\"". $message ."\">"; 
      echo "<input type=\"submit\" name=\"sendemail\" value=\"Send Email\"></form>"; 

     echo "</td></tr></table>"; 

} 
else if ($_POST['sendemail']) 
{ 
    LoadLib_PHPMailer(); 
    $mail = new MLMail; 

    $email_array = $_POST['emaillist']; 

    if (is_array($email_array) == TRUE) 
    { 
      $mail->AddAddress($mail->From); 
      $mail->Subject = stripslashes($_POST['emailtitle']); 
      $mail->Body = stripslashes($_POST['emailmessage']); 

      if(!$mail->Send()) 
       echo "There has been an error sending email:<br><br><b>" . $mail->ErrorInfo . "</b>"; 
      else 
       echo "Message has been sent successfully.<br><br><a href=\"" . $_SERVER['SCRIPT_URL'] . "\">Send another message</a>"; 
      $mail->ClearAddresses(); 
    } 
} 
else 
{ 
    $sEditSubject = $_POST['emailtitle']; 
    if (isset($sEditSubject)) 
     $subject = $sEditSubject; 
    else 
     $subject = ""; 

    $sEditMessage = $_POST['emailmessage']; 
    if (isset($sEditMessage)) 
     $message = $sEditMessage; 
    else 
    { 
    $message = "\n\n\n<br>FOOTER</BR>\n\n"; 
    } 
    echo "Subject:"; 
    echo "<br><input type=\"text\" name=\"emailtitle\" size=\"80\" value=\"" . htmlspecialchars(stripslashes($subject)) . "\"></input>"; 
    echo "<br>Message:"; 
    echo "<br><textarea name=\"emailmessage\" rows=\"20\" cols=\"72\">" . htmlspecialchars(stripslashes($message)) . "</textarea>"; 
    echo "<br><input type=\"submit\" name=\"preview\" value=\"Preview\"></form>"; 
} 

?> 

和這是郵件列表,settings.inc.php其從sendmail.php

<?php 
$listname = "Mailing List"; 
$listfile = "list.csv"; 
$sPHPMAILER_PATH = "phpmailer"; 
$sProtocol = "http://"; 
$sReferrer = "index.php"; 
$bEmailSend = true; 
$sSendType = "smtp"; 
$sFromEmailAddress = "[email protected]"; 
$sFromName = "my name"; 
$sSMTPHost = "mail.smtp.com"; 
$sSMTPAuth = true; 
$sSMTPUser = "[email protected]"; 
$sSMTPPass = "password"; 
$iSMTPPort = 25; 
$ishtml = true; 

require $sPHPMAILERpath . "class.phpmailer.php"; 
require $sPHPMAILERpath . "class.smtp.php"; 

// Define parameters as class MLMail 
class MLMail extends PHPMailer { 
    // Set default variables for all new objects 
    var $From; 
    var $FromName; 
    var $Mailer; 
    var $IsHtml; 
    var $WordWrap; 
    var $Host; 
    var $SMTPAuth; 
    var $Username; 
    var $Password; 
    var $Port; 

    function MLMail() { 
     parent::SetLanguage('en','phpmailer/language/'); 
     $this->From = $GLOBALS['sFromEmailAddress']; 
     $this->FromName = $GLOBALS['sFromName']; 
     $this->Mailer = $GLOBALS['sSendType']; 
     $this->IsHtml = $GLOBALS['ishtml']; 
     $this->WordWrap = $GLOBALS['sWordWrap']; 
     if ($this->Mailer == "smtp") 
     { 
      $this->Port = $GLOBALS['iSMTPPort']; 
      $this->Host = $GLOBALS['sSMTPHost']; 
      $this->SMTPAuth = $GLOBALS['sSMTPAuth']; 
      if ($this->SMTPAuth) { 
       $this->Username = $GLOBALS['sSMTPUser']; 
       $this->Password = $GLOBALS['sSMTPPass']; 
      } 
     } 
    } 
} 
+0

你有沒有試過htmlentities? [鏈接](http://ch2.php.net/manual/en/function.htmlentities.php) – kamalo 2012-02-14 18:11:39

回答

0

您正在使用的腳本的PHPMailer的擴展名爲。當你提到isHTML變量時,你是對的,但是這個變量需要使用Phpmailer類的內置方法來設置。

在你sendmail.php文件中添加以下內容(三)行:

$mail->AddAddress($mail->From); 
    $mail->Subject = stripslashes($_POST['emailtitle']); 

    $mail->IsHTML(true); 

    $mail->Body = stripslashes($_POST['emailmessage']); 

您可能還需要提供一個非HTML電子郵件以及(因爲一些電子郵件客戶端不接受HTML郵件),在這種情況下,你可以在$ MAIL->車身行後添加如下內容:

$mail->AltBody= striptags(stripslashes($_POST['emailmessage'])); 

,將滿足對非HTML版本,以及,發送 - 作爲後備。