2012-02-14 12 views
0

私はメーリングリストにプレーンテキストの電子メールを送信する非常に基本的なPHPMailerフォームを作成する方法を示すPHPチュートリアルからいくつかのコードをまとめてみようとしています。シンプルさは、フォームにHTMLを使用する機能を含めることを望みますが、このフォームを使用する人が2人いるため、ほとんどの場合、私が欲しいものです。たとえば、<center>タグを使用するか、ホストされた画像<img src="www.link.com/img.jpg">を挿入して、電子メールをさらに豊かにしたいとします。PHPMailer with textarea formとhtml

現時点では、html埋め込みを有効にする方法を理解できません。私は、フォームにHTMLコードを配置する場合、それは単にちょうど私がメールを同じように表示させたいような<b><i>text</i></b>ようなコードを出力します。テキスト

私はそれがIsHTML(True);変数である可能性が考えていたが、私は電子メールを送信するとすべてうまく動作しているようです。もし私が<input typeを取り除いて<spanと言うと変更すると、電子メールメッセージは単に空白になります。ここ

は、私がのオフ働いている元のコードです:ここhttp://yorkspace.wordpress.com/simple-php-mailing-list/

は、1つのメッセージを編集するために行くところです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>"; 
} 

?> 

とこれは、あなたが使用しているスクリプトがphpmailerのを拡張したものです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を試しましたか? [link](http://ch2.php.net/manual/en/function.htmlentities.php) – kamalo

答えて

0

から呼び出されたメーリングリスト-settings.inc.phpです。 isHTML変数について言及すると正しいですが、この変数はPhpmailerクラスの組み込みメソッドを使用して設定する必要があります。

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

    $mail->IsHTML(true); 

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

あなたはまた、同様に(一部の電子メールクライアントがHTMLメールを受け入れないので、非HTML形式の電子メールを提供することもできます。あなたのsendmail.phpファイルは、次の(第3)の行を追加して

- フォールバックとして

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

送信されるように、同様に非HTMLバージョンに応じるます)、その場合、あなたは$ mail->ボディラインの後にこのような何かを追加することができます。