2014-03-07 48 views
0

Screenshot of my content, which has to be mailed我們如何發送表格數據到使用php的郵件?

我正在顯示用戶提交的每日報告,現在我想單擊發送電子郵件按鈕時將相同的郵件發送給電子郵件。我怎麼能在PHP中做到這一點? 我用下面的代碼

extract($_REQUEST); 

if(isset($send_mail)){ 
    $edata= $_POST['send_msg']; 
    echo "<script type='text/javascript'>alert('$edata');</script>"; 
    $ka_semail=$_SESSION['user_email']; 
    $subject = "Report"; 
    $body = $edata; 
    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
    $headers .= 'From: Info <'.$ka_semail.'>' . "\r\n"; 

$mchk= mail($ka_semail, $subject, $body, $headers); 
     if(isset($mchk)){ 
     echo "<script type='text/javascript'>alert('Your data Sent sucessfully');</script>"; 
     header("location:reports.php"); 
     } 
} 
?> 
<body> 
    <div id="main"> 
    <header> 
     <div id="logo"> 
     <div id="logo_text"> 
      <a href="index.html"> 
      <div style="background:#2A0000"><img src="images/kreamsoftlogo.png"/></a></div> 
     </div> 

     </div> 
     <?php include'nav.php'; ?> 
    </header> 
    <div id="site_content"> 
     <div id="email-data"> 
    <div id="content"> 
     <div class="content" style="min-height:385px; width: 100%" > 

     <h1>Daily Report </h1> 
     <? 
     $current_date = date("d/m/Y"); 

     $current_user = $_SESSION['user_login']; 

     $find = mysql_query("select * from k_dailyreport where kr_user='$current_user' AND kr_date='$current_date'"); 


     ?> 
     <div class="content_item"> 
      <ul> 

     <?php 
     $numrow=mysql_num_rows($find); 
     if($numrow>0){ 
           $sino = 0; 
      echo "<table border='0' width='100%'>"; 
      echo "<tr class='head'>"; 
      echo "<th>S.No</th>"; 

        echo "<th>Project</th>"; 
        echo "<th>Process</th>"; 
        echo "<th>Process Date</th>"; 
        echo "<th>Current Duration</th>"; 

        echo "</tr>"; 
        $sno=0; 
      while($row = mysql_fetch_array($find)){ 
       $sno=$sno +1; 
        $sino++; 
           $cls = ($sino%2==0) ? "even" : "odd"; 
        echo "<tr class='t1'>"; 
        echo "<td>$sno</td>"; 
        echo "<td>".$row['kr_project']."</td>"; 
        echo "<td>".$row['kr_process']."</td>"; 
        echo "<td>".$row['kr_rtime']."</td>"; 
       echo "<td>".$row['kr_ctime']."</td>"; 

        }?></td> 

      <?php 
        echo "</tr>"; 
        ?><form name="test" method="post"enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
        <p style='padding-top: 15px;margin-right: 50px; float:right'><input class='submit' id="sendEmail" type="submit" name='sendmail' value='Send Mail' /> 
        <input type="hidden" name="send_mail" value="send_mail" /> 
        <input type="hidden" name="send_msg" value="<?php 
     $numrow=mysql_num_rows($find); 
     if($numrow>0){ 
           $sino = 0; 
      echo "<table border='0' width='100%'>"; 
      echo "<tr class='head'>"; 
      echo "<th>S.No</th>"; 

        echo "<th>Project</th>"; 
        echo "<th>Process</th>"; 
        echo "<th>Process Date</th>"; 
        echo "<th>Current Duration</th>"; 

        echo "</tr>"; 
        $sno=0; 
      while($row = mysql_fetch_array($find)){ 
       $sno=$sno +1; 
        $sino++; 
           $cls = ($sino%2==0) ? "even" : "odd"; 
        echo "<tr class='t1'>"; 
        echo "<td>$sno</td>"; 
        echo "<td>".$row[1]."</td>"; 
        echo "<td>".$row[2]."</td>"; 
        echo "<td>".$row[3]."</td>"; 
       echo "<td>".$row[3]."</td>"; 
        echo "</tr>"; 
        }echo "</table>";}?>" /></p> 

        </form> 
        <?     
        }else{ 
        ?> 

         <center><img style="text-align:center" src="images/no_record.gif" /></center> 


        <? 
        } 

      echo "</table>"; 
     ?> 
    </li> 
    </ul> 



     </div> 
      </div> </div> 
     </div> 

    </div> 

我要寄與數據

+0

谷歌搜索「PHP發送電子郵件」看起來很有前途... – David

+0

@David它易於使用PHP發送電子郵件。但我問的是,包含記錄的整個表必須郵寄到 – user3239311

+0

作爲HTML?你可以構造一個HTML電子郵件,我想現在大多數郵件發送庫都支持這個。你只是在一個循環中構建這個輸出?您可以使用類似的(或甚至相同的)循環來構建電子郵件正文。當然,造型電子郵件與設計網頁完全不同。嵌入式資源優先於鏈接的資源,並且爲了簡化線內樣式,在電子郵件正文中通常是有意義的。現在還不清楚問題在哪。你是在問如何抓取渲染頁面的截圖併發送它或什麼? – David

回答

1

整個表不知道你的代碼什麼的,我可以或許至少猜測,什麼樣構建這個表的結構。也許沿此線的東西?:

writeTableHeader(); 
foreach ($values as $value) { 
    writeTableRow($value); 
} 
writeTableFooter(); 

甚至抽象到它自己的更高級別的功能?:

function writeTable($values) { 
    $result = ''; 

    $result .= buildTableHeader(); 
    foreach ($values as $value) { 
     $result .= buildTableRow($value); 
    } 
    $result .= buildTableFooter(); 

    return $result; 
} 

任何此類功能或抽象可用於構建HTML的電子郵件身體以及...

// ... previously building the overall email body 
$mailBody .= writeTable($values); 
// ... maybe some more email body elements as well 
mail($to, $subject, $mailBody); 

造型的電子郵件將是另一個故事,當然。最好不要依賴HTML電子郵件中的鏈接資源,這些郵件往往不會被郵件客戶端請求,因爲他們經常被垃圾郵件發送者等濫用。您可以在電子郵件中包含樣式表作爲「嵌入式資源」,但在大多數情況下,我認爲內聯樣式可能是最適合電子郵件的樣式。 (某些郵件客戶端甚至可能不會加載嵌入式資源,至少在沒有首先提示用戶的情況下,這不是一個理想的用戶體驗。)

假設您不想複製太多的代碼,上述方法可以使用Form Template Method重構模式(example here等)進行抽象。

我想得到的一點是,電子郵件不會發送網頁,而是網頁和電子郵件都是基礎數據的獨立「視圖」。它們之間的通用代碼當然可以被抽象和共享,但是嘗試在電子郵件中重複使用網頁本身就是過度複雜的情況。

+0

感謝您寶貴的時間。現在更新了我用來在網頁上打印表格的代碼。現在我想要的僅僅是將整個表格郵寄到網頁 – user3239311

+0

@ user3239311:好吧,看起來你會想重構一下這些代碼,使它更加可重用。但是我的答案的一般模式是成立的。將數據庫組件進一步移動到頂部以獲取數據,然後使用數據完成構建標題,行和頁腳的步驟。目前,這一切都是在頁面內部完成的,但也可以很容易地由一個由一個函數(或一系列函數)構建的HTML字符串和'echo'到頁面。這個字符串也可以用在電子郵件正文中。 – David

+0

您能否糾正錯誤並給我示例代碼?因爲我試過了我所知道的一切 – user3239311

相關問題