2012-02-08 13 views
0

私のニュースレターに署名するためにlinfを追加したいと思います。私はニュースレターに変数 "email"を与えることはできません。 私は同じ時間にいくつかの電子メールにニュースレターを送っています $テンプレートはニュースレターにデータベースからデータを得ることができます、そして私のニュースレターは次のような変数でhtmlにあります:{変数}} 私のコードテンプレートを私の間、しかし電子メールはまだ最初のemaiです。 アイデアはありますか?ニュースレターの購読を停止する

はここのコードです:

if($_POST['recipients']) { 

    $template = file_get_contents('template/emails/newsletter.html'); 

    $addresses = explode(';', $_POST['recipients']); 
    $subject = stripslashes($_POST['subject']); 
    foreach($addresses as $address) { 

    $newsletter_unsign = ' <a href="http://dev.cater2.me/unsign-newsletter.php?id='.$address.'">Unsubscribe from the newsletter</a>.'; 

    $template = str_replace(array('{{newsletter_top_bar}}','{{newsletter_top}}','{{newsletter_title1}}','{{newsletter_body1}}','{{newsletter_title2}}','{{newsletter_body2}}','{{newsletter_title3}}','{{newsletter_body3}}','{{newsletter_side_title}}','{{newsletter_side}}','{{newsletter_bottom}}','{{newsletter_footer}}','{{newsletter_unsign}}'), 
        array($_POST['newsletter_top_bar'],$_POST['newsletter_top'],$_POST['newsletter_title1'],$_POST['newsletter_body1'],$_POST['newsletter_title2'],$_POST['newsletter_body2'],$_POST['newsletter_title3'],$_POST['newsletter_body3'],$_POST['newsletter_side_title'],$_POST['newsletter_side'],$_POST['newsletter_bottom'],$_POST['newsletter_footer'], $newsletter_unsign), 
        $template); 


     $address = trim($address); 

     sendMail($address, $subject, str_replace('{{c2me_tracking_link}}', 'http://cater2.me/?ref='.urlencode(c2me_encrypt($address)), $template), true); 
    } 

    notif('E-mail(s) sent'); 
} 

}

答えて

0
if($_POST['recipients']) { 

    $original_template = file_get_contents('template/emails/newsletter.html'); 

    $addresses = explode(';', $_POST['recipients']); 
    $subject = stripslashes($_POST['subject']); 

    foreach($addresses as $address) { 

     // You should have made sure before/outside the foreach loop, that the e-mails are well-formatted and valid 
     $address = trim($address); 

     $this_template = $original_template; 

     $newsletter_unsign = ' <a href="http://dev.cater2.me/unsign-newsletter.php?id='.$address.'">Unsubscribe from the newsletter</a>.'; 

     $this_template = str_replace(array('{{newsletter_top_bar}}','{{newsletter_top}}','{{newsletter_title1}}','{{newsletter_body1}}','{{newsletter_title2}}','{{newsletter_body2}}','{{newsletter_title3}}','{{newsletter_body3}}','{{newsletter_side_title}}','{{newsletter_side}}','{{newsletter_bottom}}','{{newsletter_footer}}','{{newsletter_unsign}}'), 
        array($_POST['newsletter_top_bar'],$_POST['newsletter_top'],$_POST['newsletter_title1'],$_POST['newsletter_body1'],$_POST['newsletter_title2'],$_POST['newsletter_body2'],$_POST['newsletter_title3'],$_POST['newsletter_body3'],$_POST['newsletter_side_title'],$_POST['newsletter_side'],$_POST['newsletter_bottom'],$_POST['newsletter_footer'], $newsletter_unsign), 
        $this_template); 

     sendMail($address, $subject, str_replace('{{c2me_tracking_link}}', 'http://cater2.me/?ref='.urlencode(c2me_encrypt($address)), $this_template), true); 
    } 
    notif('E-mail(s) sent'); 

}あなたは一度だけファイルから$templateをフェッチ

0

が、その後、あなたはそれを複数回交換してみてください。最初の置換後、最初の受信者のデータで固定されます。

置き換えられた文字列を新しい変数に割り当てるようにしてください。 $template_after_replace:改良として

if($_POST['recipients']) { 

    $template = file_get_contents('template/emails/newsletter.html'); 

    $addresses = explode(';', $_POST['recipients']); 
    $subject = stripslashes($_POST['subject']); 
    foreach($addresses as $address) { 

    $newsletter_unsign = ' <a href="http://dev.cater2.me/unsign-newsletter.php?id='.$address.'">Unsubscribe from the newsletter</a>.'; 

    $template_after_replace = str_replace(array('{{newsletter_top_bar}}','{{newsletter_top}}','{{newsletter_title1}}','{{newsletter_body1}}','{{newsletter_title2}}','{{newsletter_body2}}','{{newsletter_title3}}','{{newsletter_body3}}','{{newsletter_side_title}}','{{newsletter_side}}','{{newsletter_bottom}}','{{newsletter_footer}}','{{newsletter_unsign}}'), 
       array($_POST['newsletter_top_bar'],$_POST['newsletter_top'],$_POST['newsletter_title1'],$_POST['newsletter_body1'],$_POST['newsletter_title2'],$_POST['newsletter_body2'],$_POST['newsletter_title3'],$_POST['newsletter_body3'],$_POST['newsletter_side_title'],$_POST['newsletter_side'],$_POST['newsletter_bottom'],$_POST['newsletter_footer'], $newsletter_unsign), 
       $template); 


    $address = trim($address); 

    sendMail($address, $subject, str_replace('{{c2me_tracking_link}}', 'http://cater2.me/?ref='.urlencode(c2me_encrypt($address)), $template_after_replace), true); 
    } 

    notif('E-mail(s) sent'); 
} 

、あなたはちょうどその個別foreachループ内$newsletter_unsignを置き換えるが、私は意志、)(例えば$_POST['newsletter_top']を変更することはありません事を置き換えるためにforeachループの前に(一度の交換を実行することができますOPの練習としてそれを残してください。

+0

ありがとう!それはうまく動作します:) – webcalif

関連する問題