PHP使用if语句在一个邮件中发送多行

时间:2018-01-23 08:21:37

标签: php mysql email

我发送一封包含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}}

4 个答案:

答案 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));