我发送一封包含mysqldb
值的提醒邮件。我在约会前一天用if语句发送邮件。问题是我要为每一行发送一封邮件,我希望在一封邮件中汇总所有数据。我已经尝试将 if语句放在while循环之外,但是后来我只获得了$sql = "SELECT * FROM moments";
$result = $conn->query($sql);
while($row = mysqli_fetch_array($result)){
$name= $row['name'];
if($difference == -1) { //$difference is my calculation for the day before, it works so I'm not writing it down
$to = 'mail@mail.com';
$message = $name;
$subject = 'This is the subject';
// To send HTML mail, the Content-type header must be set
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';
// Mail it
mail($to, $subject, $message, implode("\r\n", $headers));
}
}
的第一个结果,我需要它们。
我的代码:
{{1}}
答案 0 :(得分:2)
如果要发送包含所有数据的一封邮件,则需要concatenate所有数据。像这样的东西会起作用:
$name = "";
while($row = mysqli_fetch_array($result))
{
$name .= $row['name'] . "\n";
}
在此之后,您可以按照自己的意愿发送$name
格式。
另一个选择是将所有结果放在一个数组中,然后implode
,如下所示:
$names = array();
while($row = mysqli_fetch_array($result))
{
$names[] = $row['name'];
}
$message = "The names are: " . implode(', ', $names);
上面的语法将创建一个以逗号分隔的名称列表。
答案 1 :(得分:2)
$summary
如果您引用contacts
的数据, {$IF CompilerVersion >= 17 }
{$DEFINE D2005UP }
{$ELSE }
{$UNDEF D2005UP }
{$ENDIF }
{$IF CompilerVersion >= 20 }
{$DEFINE D2009UP }
{$ELSE }
{$UNDEF D2009UP }
{$ENDIF }
PROCEDURE SendKeys(CONST Keys : ARRAY OF WORD);
VAR
{$IFDEF D2009UP }
InputEvents : TArray<TInput>;
{$ELSE }
InputEvents : ARRAY OF TInput;
{$ENDIF }
{$IFNDEF D2005UP }
I : INTEGER;
{$ENDIF }
Key : WORD;
PROCEDURE Add(Key : WORD ; Action : WORD = 0);
VAR
INP : TInput;
BEGIN
FillChar(INP,SizeOf(TInput),0);
INP.Itype:=INPUT_KEYBOARD;
INP.ki.wVk:=Key;
INP.ki.wScan:=0;
INP.ki.dwFlags:=Action;
INP.ki.time:=0;
INP.ki.dwExtraInfo:=0;
{$IFDEF D2009UP }
InputEvents:=InputEvents+[INP]
{$ELSE }
SetLength(InputEvents,SUCC(LENGTH(InputEvents)));
InputEvents[HIGH(InputEvents)]:=INP
{$ENDIF }
END;
PROCEDURE AddKeyDown(Key : WORD);
BEGIN
Add(Key)
END;
PROCEDURE AddKeyUp(Key : WORD);
BEGIN
Add(Key,KEYEVENTF_KEYUP)
END;
PROCEDURE AddKeyPress(Key : WORD);
BEGIN
AddKeyDown(Key);
AddKeyUp(Key)
END;
BEGIN
IF LENGTH(Keys)=0 THEN EXIT;
{$IFDEF D2005UP }
FOR Key IN Keys DO AddKeyPress(Key);
{$ELSE }
FOR I:=LOW(Keys) TO HIGH(Keys) DO BEGIN
Key:=Keys[I];
AddKeyPress(Key)
END;
{$ENDIF }
SendInput(LENGTH(InputEvents),InputEvents[LOW(InputEvents)],SizeOf(TInput));
Application.ProcessMessages
end;
PROCEDURE SetDateTimePickerFocus(DTP : TDateTimePicker ; FocusTo : CHAR);
VAR
S : STRING;
BEGIN
DTP.SetFocus;
Application.ProcessMessages;
S:=DTP.Format; DTP.Format:='HH';
Application.ProcessMessages;
DTP.Format:=S;
Application.ProcessMessages;
CASE UpCase(FocusTo) OF
'H' : ; // NOTHING //
'M' : SendKeys([VK_RIGHT]);
'S' : SendKeys([VK_RIGHT,VK_RIGHT])
ELSE // OTHERWISE //
RAISE ERangeError.Create('Unsupported FocusTo value in SetDateTimePickerFocus: "'+FocusTo+'"')
END
END;
{$IFDEF D2005UP }
TYPE
TDateTimePickerHelper = CLASS HELPER FOR TDateTimePicker
PROCEDURE SetFocusTo(C : CHAR);
END;
{ TDateTimePickerHelper }
PROCEDURE TDateTimePickerHelper.SetFocusTo(C : CHAR);
BEGIN
SetDateTimePickerFocus(Self,C)
END;
{$ENDIF }
会将这些结果包含为数组格式
答案 2 :(得分:1)
您可以连接邮件并将其发送到一封电子邮件中,如下所示:
$sql = "SELECT * FROM moments";
$result = $conn->query($sql);
$message = ''; // Initialize the message to blank
while($row = mysqli_fetch_array($result))
{
$name= $row['name'];
if($difference == -1) { //$difference is my calculation for the day before, it works so I'm not writing it down
$message .= $name . '<br/>';
}
}
// Send email if message is present
if(!empty($message))
{
$to = 'mail@mail.com';
$subject = 'This is the subject';
// To send HTML mail, the Content-type header must be set
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';
// Mail it
mail($to, $subject, $message, implode("\r\n", $headers));
}
答案 3 :(得分:1)
按以下方式更改代码
$sql = "SELECT * FROM moments";
$result = $conn->query($sql);
$message = "";
while($row = mysqli_fetch_array($result))
{
$name= $row['name'];
if($difference == -1) { //$difference is my calculation for the day before, it works so I'm not writing it down
$to = 'mail@mail.com';
$message = $message."<br>".$name;
$subject = 'This is the subject';
// To send HTML mail, the Content-type header must be set
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';
// Mail it
}
}
mail($to, $subject, $message, implode("\r\n", $headers));