phpでメール送信part4

2019年10月12日 CEO 0 Comments

では本題。

DBからのリストを元にメールを送信。

<!DOCTYPE html>
<html lang=”ja”>
<head>
<meta charset=”UTF-8″>
<title>select test</title>
<link rel=”stylesheet” href=”css/style.css”>
<?php
require “../conn.php”;//db接続
$records=$db->query(“SELECT code,mailaddress
FROM lists”);//recordsにすべてのレコードが代入される
?>
</head>
<body>
<?php
while($record=$records->fetch()){//各データを取り出して、false()になるまでrecordに代入
print($record[“code”].”//mailto:”.$record[“mailaddress”].”</br>”);
mb_language(“Japanese”);
mb_internal_encoding(“UTF-8”);

ここから先は前回も投稿しましたが、

   $to = $record["メールアドレス"];
   $title = "テストメール";

   //ヘッダー設定
   $header = "Content-Type: multipart/mixed;boundary=\"__BOUNDARY__\"\n";
   $header .= "Return-Path: " . $to . " \n";
   $header .= "From: " . $from ." \n";
   $header .= "Sender: " . $from ." \n";
   $header .= "Reply-To: " . $to . " \n";

   //本文
   $text = "テストメール";
   $content = "--__BOUNDARY__\n";
   //$content .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n\n";
   $content .= "Content-Type: text/plain; charset=\"UTF-8\"\n\n";
   $content .= $text . "\n";
   $content .= "--__BOUNDARY__\n";

   //添付ファイル名
   $file = $record["code"].".pdf";

   //添付ファイル設定
   $content .= "Content-Type: application/octet-stream; name=\"{$file}\"\n";
   $content .= "Content-Disposition: attachment; filename=\"{$file}\"\n";
   $content .= "Content-Transfer-Encoding: base64\n";
   $content .= "\n";
   $content .= chunk_split(base64_encode(file_get_contents("./pdf/".$file)));
   $content .= "--__BOUNDARY__\n";



   if(mb_send_mail($to, $title, $content,$header)){
   echo "メールを送信しました";
   } else {
   echo "メールの送信に失敗しました";
   }

}
$db=null;

?>
</body>
</html>

ってな感じですかね。

ところが、素人にはこれが限界。。

チューニングしないと、このまま使用してしまうと、

10回に一回くらいは送信に失敗してしまいます。。

https://teratail.com/questions/12514

よいライブラリを使用した方が、手っ取り早いかも。。