2017-11-13 5 views
0

나는 항목의 만료 날짜를 보여주는 SQL table을 가지고 있으며 전자 메일을 통해 매일 만료 날짜의 상태를 보내려고합니다. 여기서 사용자는 나열된 항목의 만료 날짜 업데이트를 알 수 있습니다.phpmailer를 사용하여 SQL 테이블에서 정보를 보내는 방법은 무엇입니까?

나는 로컬 호스트을 사용하여 this example in phpmailer을 사용하려고 시도했지만 작동하지만 내 케이스와 연결하는 방법을 모르겠다. 예를 들어

$body= include ('sql.php'); 같이 수행 할 수 있습니다 또는 내가 this table에서 만료 날짜 및 만료 메시지를 전송에만 관심이 어디에? 그렇게 할 수있는 다른 방법이 있습니다, 그리고 그것은을 보낼 수 전체 테이블? 여기

는 SQL 코드

<?php 

$con=mysqli_connect('localhost','','','arduino'); 

if(mysqli_connect_errno($con)) 
{ 
    echo 'Failed to connect:'.mysqli_connect_error(); 
} 
else 
    echo 'Connected Successfully!! </br>'; 
$url=$_SERVER['REQUEST_URI']; 
$sql = "SELECT 
    ID, 
    Item_Name, 
    Expiry_Date, 
    CASE 
     WHEN `Expiry_Date` < CURDATE() THEN CONCAT(`Item_Name`,' has EXPIRED already') 
     WHEN `Expiry_Date` = CURDATE() THEN CONCAT(`Item_Name`,' will expire today') 
     WHEN `Expiry_Date` BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY) THEN CONCAT(`Item_Name`,' will expire tomorrow') 
     WHEN `Expiry_Date` > DATE_ADD(CURDATE(), INTERVAL 1 DAY) THEN CONCAT(`Item_Name`,' has not expire yet') 
     ELSE 'Error processing expiration date.' 
    END AS `Expiration_Message` 
FROM 
    test;"; 

    $result = mysqli_query($con,$sql); 


    while($row = mysqli_fetch_array($result)){ 
     echo ($row['Expiration_Message']); 
     echo '<br>'; 
    } 

    print_r($row); 

    mysqli_close($con); 

?> 

입니다 그리고 여기에 내가 phpmailer 예를 들어 당신은 그것을 표시하지 변수로 결과를 저장해야

<?php 
// Import PHPMailer classes into the global namespace 
// These must be at the top of your script, not inside a function 
use PHPMailer\PHPMailer\PHPMailer; 
use PHPMailer\PHPMailer\Exception; 

//Load composer's autoloader 
require 'vendor/autoload.php'; 

$mail = new PHPMailer(true);        // Passing `true` enables exceptions 
try { 
    //Server settings 
    //$mail->SMTPDebug = 1;         // Enable verbose debug output 
    $mail->isSMTP();          // Set mailer to use SMTP 
    $mail->Host = 'Smtp.live.com'; // Specify main and backup SMTP servers 
    $mail->SMTPAuth = true;        // Enable SMTP authentication 
    $mail->Username = '[email protected]';     // SMTP username 
    $mail->Password = 'XXXXX';       // SMTP password 
    $mail->SMTPSecure = 'tls';       // Enable TLS encryption, `ssl` also accepted 
    $mail->Port = 587;         // TCP port to connect to 

    //Recipients 
    $mail->setFrom('[email protected]', 'Smart Fridge'); 
    $mail->addAddress('[email protected]', 'Joe');  // Add a recipient 
    $body= '<p><td><strong>Hello</strong></td> this is my first email!!!!</p>'; 

    //Content 
    $mail->isHTML(true);         // Set email format to HTML 
    $mail->Subject = 'Expiry Date'; 
    $mail->Body = $body; 
    $mail->AltBody = strip_tags($body); 

    $mail->send(); 
    echo 'Message has been sent'; 
} catch (Exception $e) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
} 

답변

0

에서했다 코드입니다.

$mailBody = ''; 

while($row = mysqli_fetch_array($result)){ 
    $mailBody .= $row['Expiration_Message'] . "<br>\n"; 
} 

하고 나중에

$mail->Body = $mailBody; 

.=는 문자열을 연결하는 연산자입니다. 다음과 같습니다.

$mailBody = $mailBody . 'something new string to concat'; 
+0

도움 주셔서 감사합니다. 귀하의 방법은 효과가 있지만, 'Expiration_Message' 및'Expiry_Date '와 같은 두 개의 행을 보내려면 어떻게해야합니까? – Monzer

+0

그런 다음 문자열'$ mailBody. = $ row [ 'Expiration_Message']에 연결하기 만하면됩니다. ", 날짜 :". $ row [ 'Expiry_Date']. "
\ n";'그냥 읽으십시오 : http://php.net/manual/en/language.operators.string.php – vaso123

+0

다시 한번 감사드립니다. 이 경우 SMS 메시지, 전보 또는 기타 유형의 알림을 보낼 수있는 방법이 있는지 알고 있습니까? – Monzer