PHP
1<?php 2 3 try 4 { 5 6 7 require_once('./function.php'); 8 require_once('./config.php'); 9 10 $title=$_POST['title']; 11 $naiyou=$_POST['naiyou']; 12 13 $dbh=new PDO(DSN,DB_USER,DB_PASSWORD); 14 $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 15 $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 16 17 $sql='select mail from hon_table'; 18 19 20 print 'メールマガジンの送信登録しました。<br><br>'; 21 22 23 24 print'タイトル'; 25 print'<br>'; 26 27 print $title; 28 print'<br>'; 29 print '~内容~<br><br>'; 30 print nl2br(h($naiyou)); 31 32 $count = 0; 33 34 foreach ($dbh->query($sql) as $row) { 35 $honbun = "$naiyou\n\n\n"; 36 37 $title=$title; 38 $header = 'From:info@hogehoge.com'; 39 //メールヘッダーインジェクション対策 40 $header = str_replace(array("\r\n", "\r", "\n"), "", $header); 41 $honbun = html_entity_decode($honbun, ENT_QUOTES, 'UTF-8'); 42 mb_language('japanese'); 43 mb_internal_encoding('UTF-8'); 44 mb_send_mail($row['mail'], $title, $honbun, $header); 45 46 $count++; 47 if ($count > 50 && $count % 50 == 1) { // 51, 101, 151, ... の場合30秒停止 48 sleep(30); 49 } 50 51 $dbh = null; 52 } 53 } 54 catch (Exception $e) 55 { 56 print '取得に失敗しました。ただいま障害により大変ご迷惑をお掛けしております。'; 57 exit(); 58 } 59 ?> 60
$count = 0;置き場所で悩んでいます。
foreachの手前に書いてますが、
繰り返し処理の中でないので、カウント0が機能するのでしょうか?
うまくsleepが機能するのでしょうか?
仮想開発環境なので実際メールを大量に送る実験をしてません。
この書き方でよいのか不安です。
アドバイス願います。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。