前回の投稿に誰も答えてくれなかったので再投稿です。
それぞれのpdfファイルが添付された複数の受信者に電子メールを送信しようとしています。複数の受信者に電子メールを送信することに成功しましたが、受信者は複数の電子メールを受信します。受信者が受信した電子メールの数は、データベースに保存されている電子メール アドレスの数です。
私が遭遇した 2 番目の問題は、受信者に送信された添付ファイルがすべて同じファイルだったことです。シナリオは次のようになります。受信者 A には PDF A が添付された電子メールがあり、受信者 B には PDF B が添付されている必要があります。
これらの pdf には、各受信者が持つ一意の管理番号に対応するファイル名があります。たとえば、受信者 A の管理番号は 1234 であるため、彼の pdf は 1234.pdf という名前になります。
$ctrl_no = mysql_result($ctrl, 0) で wile ループを実行しようとしましたが、サーバーのメモリ制限に達したというエラーが表示されます。
あなたが私の2つの問題を解決するのを手伝ってくれることを願っています.
$input = addslashes($_POST['dep']);
$email = "select email_address from student y where y.center = '$input'";
if ($p_address=mysql_query($email))
{
while($row = mysql_fetch_array($p_address))
{
$mail->AddAddress($row[0]);
$input = addslashes($_POST['dep']);
$control = "select control_no from student y where y.center = '$input'";
if($ctrl=mysql_query($control)){
$ctrl_no = mysql_result($ctrl, 0);
$mail->AddAttachment("reports/".$ctrl_no.".pdf");
}
else{
echo "No attached pdf.";
}
更新: $mail 関数
require_once('phpmailer/class.phpmailer.php');
include("phpmailer/class.smtp.php");
$mail = new PHPMailer();
$body = file_get_contents('phpmailer/body.html');
$body = preg_replace('/\/b]/','',$body);
$mail->IsSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPDebug = 1;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Host = "smtp.gmail.com";
$mail->Port = 587;
$mail->Username = "me@gmail.com";
$mail->Password = mypass;
$mail->SetFrom("me@gmail.com", "Office");
$mail->AddReplyTo("me@gmail.com"," Office");
$mail->Subject = "My Subject";
$mail->AltBody = "Subject file";
$mail->MsgHTML($body);