1

htmlファイル内にhtmlメールを実装しました。そして、私はPHPMailerクラスを使用して電子メールを送信するphpファイルを持っています。私が達成したいのは、HTML内にテキストがあり、誰にメールを送信するかによって変更する必要があるということです。

これはメールを送信するphpファイルです

<?php
    // get variables
    $contact_name = addslashes($_GET['contact_name']);
    $contact_phone = addslashes($_GET['contact_phone']);
    $contact_email = addslashes($_GET['contact_email']);
    $contact_message = addslashes($_GET['contact_message']);

    // send mail
    require("class.phpmailer.php");
    $mailer = new PHPMailer();
    $mailer->IsSMTP();
    $mailer->Host = 'ssl://smtp.gmail.com:465';
    $mailer->SMTPAuth = TRUE;
    $mailer->Username = 'danyel.p@gmail.com';
    $mailer->Password = 'mypass';
    $mailer->From = 'contact_email';
    $mailer->FromName = 'PS Contact';
    $mailer->Subject = $contact_name;
    $mailer->AddAddress('pdaniel@gmail.com');
    $mailer->Body = $contact_message;
    if($mailer->Send())
        echo 'ok';
?>

そして、テーブルとそれに必要なすべての標準で実装された単純なhtmlメールを含むhtmlファイル。

これを達成するための最良のアプローチである私のよりも勇敢な心に尋ねたいと思います。:)

ダニエル、よろしくお願いします!

編集:今、$ mailer-> Bodyに$contact_message変数をテキストメールとして持っていますが、その本文にhtmlメールを含むhtmlファイルをロードしたいのですが、どういうわけかhtmlの本文を変更したいですこの$contact_message変数内にテキストを含む電子メール。

4

4 に答える 4

1

簡単な方法の1つは、呼び出し元によって置き換えられる特別なトークンをhtmlファイルに含めることです。たとえば、コンテンツを動的に変更する可能性のある2つの変数があると仮定すると、次のようなものをhtmlに配置しname、次に呼び出し元のスクリプトに単純に次のように配置します。surname%%NAME%%%%SURNAME%%

$html = str_replace("%%NAME%%", $name, $html);
$html = str_replace("%%SURNAME%%", $surname, $html);

または、上記の2つをネストします。

$html = str_replace("%%NAME%%", $name, str_replace("%%SURNAME%%", $surname, $html));



編集 多くの変数がある場合のより洗練されたソリューション:とそれらの代替品を保持する連想配列を定義します。

$myReplacements = array ( "%%NAME%%"    => $name,
                          "%%SURNAME%%" => $surname
);

ループを使用してそれを実現します。

foreach ($myReplacements as $needle => $replacement)
   $html = str_replace($needle, $replacement, $html);
于 2012-07-24T18:53:31.840 に答える
0

見たいメールに基づいて条件文を作成します。次に、それを一時的なphphtmlメールテキストに含めます。

上記を実装する関数に変更値を渡すこともできます。

于 2012-07-24T18:45:24.340 に答える
0

私がウェブサイトを構築する場合、私は通常、Smartyのようなテンプレートエンジンを使用します...あなたはsmartyテンプレートファイルであなたのhtmlメールを書くことができます。次に、基準に基づいて必要なテキストを自動的に追加できます。テンプレートエンジンに正しい値を割り当てるだけです。

于 2012-07-24T18:47:28.603 に答える
0

あなたの編集に答えるには:

function renderHtmlEmail($body) {
    ob_start();
    include ('my_html_email.php');
    return ob_get_clean();
}

あなたのmy_html_email.phpファイルには次のようなものがあります:

<html>
    <body>
        <p>....<p>
        <!-- the body -->
        <?php echo $body; ?>
    </body>
</html>

 $mailer->Body = renderHtmlEmail($contact_message);

レイアウト/テンプレートファイルに渡すために他の変数が必要な場合は、そのメソッドにパラメータを追加するか、そのような連想配列をfunction renderHtmlEmail($viewVars)関数内に渡しますextract($viewVars);

これで、たとえば、テンプレート内でこれらの変数を使用できるようになります。Dear <?php echo $to; ?>,

まだ変更していない場合は、おそらくhtmlファイルを.htmlから.phpに変更する必要があります。

つまり、問題を正しく理解していれば。

于 2012-07-24T19:14:06.023 に答える