2014-12-03 50 views
0

因此,我正致力於獲取電子郵件閱讀收據(Laravel和PHP),其中我嘗試在打開電子郵件時更新數據庫中的字段。
描述
1.發送電子郵件給用戶。
2.一旦該用戶讀取郵件,請將數據庫中的郵件狀態從「未讀」更新爲「已讀」。PHP:獲取閱讀回執時顯示實際圖像

我已經添加到代碼中的代碼
1.發送消息ID到郵件正文。
2.添加<img>標籤一樣,

<p><img src="http://www.xyzdomain.com/messagestatus/{{$id}}"></p> 

3.有在控制器上面的URL路徑的功能,這將做DB更新我。

問題
儘管用戶讀取該郵件時狀態已成功更新爲「讀取」。郵件正文中顯示的圖像已損壞,因爲我傳遞的是網址而不是圖片。有人可以指導我如何顯示一些圖像,如一些透明的背景圖像,不會顯示破碎的圖像。
在此先感謝。

+0

我在這裏有點困惑。所以如果這個URL不會出現在圖像中,爲什麼要把它放在'src'中呢?如果它們都是相同的圖像,爲什麼不把該圖像放在除了URL之外的'src'('')? – 2014-12-03 15:06:08

+0

也許你不理解我的問題,或者我不理解你的困惑。我試圖在用戶打開電子郵件時更新系統的數據庫,我通過'img'標記中的URL發送消息ID。就像你提到的那樣,圖像始終是相同的,使用'img'標籤的邏輯一旦打開郵件,它就會在我的系統上執行該URL後面的功能並更新數據庫。 – user2067888 2014-12-03 15:27:27

回答

0

您應重定向到DB更新..例如後的圖像文件,在該URL創建一個圖像:

http://www.xyzdomain.com/img.png

(優選地一個1x1像素透明圖像)

然後在您的數據庫更新重定向使用header()到這個圖像文件。

<?php 

    ... some db updating code ... 

    header('Location: http://www.xyzdomain.com/img.png'); 
    die(); 

?> 

這樣,圖片就不會在客戶的電子郵件中被破壞。它將在更新數據庫後實際獲取圖像文件。

+0

工作。非常感謝。我對這部分感到困惑。非常感謝。 – user2067888 2014-12-03 15:26:28

1

你能避免重定向,如果你只是做一個更新後返回圖像的內容(小型1x1大小的透明圖像):

<?php 
$image = 'image.png'; 
header('Content-type: image/png'); 
readfile($image); 
exit; 

當然,你必須回到正確的mime類型。