2014-07-11 41 views
1

我正在寫一個PHP應用程序(其中包括)創建一些電子郵件報告。我想讓我的客戶點擊一個「創建電子郵件」按鈕,這將導致許多電子郵件客戶端窗口打開預填充數據,以便我的客戶可以在發送電子郵件之前檢查內容。撰寫,但不發送使用PHP的電子郵件

我可以生成一個帶有多個mailto標籤的html頁面,然後客戶在發送之前點擊它打開電子郵件(用於檢查),但這顯然是勞動密集型的,並且這是我寫作的一部分原因這個PHP應用程序。解決方案是在生成的html頁面上生成一些javascript,並在頁面加載時觸發所有的mailto鏈接?或者,還有更好的方法?

附加編輯: 關鍵是客戶需要在發送電子郵件之前手動檢查內容 - 抱歉,我不清楚。此後,客戶指定他希望電子郵件在其電子郵件客戶端中顯示爲草稿預先編寫的電子郵件,而不是顯示在網頁上。

感謝

+0

我不會依賴'mailto'鏈接從應用程序發送郵件。 – jeroen

+0

@ jeroen - 不依賴mailto的原因是什麼?我知道有人不能配置他們的郵件客戶端,但是這個應用程序是針對特定客戶的,我知道他們的電子郵件客戶端配置正確。 – rbassett

回答

2

這將是更加靈活和有效的發送郵件在服務器端,而不是要求客戶要依靠自己的郵件客戶端(當有人點擊瀏覽器一個mailto鏈接時,瀏覽器嘗試打開Outlook或Thunderbird等郵件客戶端,這可能會或可能不會配置)。您可以在頁面上打印各種表單,包括主題,地址和郵件輸入,通過郵寄(即用戶提交表單)接收郵件,然後直接從服務器發送電子郵件以響應表單提交。開始與這個:

http://us3.php.net/manual/en/function.mail.php

並檢查出的PHPMailer:

https://github.com/PHPMailer/PHPMailer

此外,如果你使用一個框架的工作,他們可能已經得到了他們自己的工具發送郵件,這比上述兩種方法更可取。我正在談論的一個非常簡單的例子可能是這樣的:

<form action='/' method='post'> 
    To Address: <input type='text' name='to_addr' /> <br/> 
    Subject: <input type='text' name='subject' /> <br/> 
    Message: <textarea name='to_addr'></textarea> <br/><br/> 
    <input type='submit' name='send' value='Send Message' /> 
</form> 
<?php 

if(!empty($_POST['send'])) 
    mail($_POST['to_addr'] , $_POST['subject'] , $_POST['message'] , 'From: [email protected]'); 
+0

有趣的想法 - 謝謝。不幸的是,我已經與我的客戶覈實過,他們並不「相信」這種在網頁中看到電子郵件的機制 - 他們希望在他們的電子郵件客戶端中看到一封電子郵件(就好像他們自己編寫了電子郵件一樣),然後點擊發送按鈕。 – rbassett

+0

不幸的是,我不認爲有一種在客戶端發送電子郵件的程序化方式,尤其是像電子郵件客戶端這樣的單獨程序,因此您的客戶端必須點擊發送每個電子郵件他們希望使用自己的客戶端電子郵件客戶端(http://www.hark.com/clips/qtmrlmfjks-youre-one-groovy-baby-baby-too-many-babies)。所以在任何情況下,您都不會通過編程方式打開這些窗口來節省太多時間? – oliakaoil

+0

感謝您的意見。節省的時間在於創建報告並打開50個包含報告(每個不同)的預先組成的草稿電子郵件,然後在點擊發送每個報告之前,客戶可以檢查這些報告。他們不相信應用程序正確創建報告,因此需要手動執行所有檢查。認爲我卡在程序上點擊50個mailto:鏈接。 – rbassett

0

您可以使用這段代碼。

$subject = 'Your mail subject'; 
    $message = 'Your message.'; 
    $header = "From: [email protected]"."\r\n"; 
    $header .= "Reply-To: [email protected]"."\r\n"; 
    $header .= "MIME-Version: 1.0"."\r\n"; 
    $header .= "Content-Type: text/plain; charset=utf-8"."\r\n"; 
    $header .= "Content-Transfer-Encoding: 8bit"."\r\n"; 
    $header .= "X-Mailer: PHP v".phpversion(); 
    mail($newemail, $subject, $message, $header); 
    header('Location: '.$success_page); 
    exit; 
+0

不幸的是,這只是發送一封電子郵件,這不是必需的。客戶需要閱讀/檢查(和修改)創建的電子郵件,然後客戶點擊發送。 – rbassett

+0

您可以從數據庫中獲取數據,然後使用該數據預填充字段(PREVIEWING),然後可以使用上面的代碼發送數據。希望這可以幫助。 – Ayan

+0

謝謝,但關鍵是不應發送。客戶將手動發送,我只是爲了撰寫電子郵件。 – rbassett

0

經過進一步調查,看來我不能使用的mailto HTML標記,因爲它will not accept html tags within the a href(如沒有經過格式化的表格),並is restricted in the number of characters

因此,現在的解決方案是返回使用上面建議的php郵件形式,並將cc發送到客戶郵件帳戶,以便他們可以按照他們的要求將電子郵件副本存儲在他們的電子郵件帳戶中。另外,我將使用tinymce,以便客戶可以在電子郵件正文中編輯預先組成的html。