2013-01-24 32 views
3
的電子郵件

是否可以在PHP中準備一封電子郵件(From,To,Subject,Body,Attachements),而不是直接用PHP發送它,用客戶端的電子郵件程序(Thunderbird /外表/...)?準備thunderbird/Outlook/

我的背景是:

  • 的形式,用戶選擇「到」接觸,要發送的文件(身體是一個預定義的文本)
  • 上提交,我想準備郵件將顯示在他最喜歡的郵件客戶端,以便他可以修改它(添加CC,修改主體,...)

如果可能,該怎麼做?

+3

難道你不只是在錨上使用'mailto:'協議嗎? – BenM

+0

您的上下文是... – BenM

+0

@BenM對不起,我只是編輯我的問題,把它放在那裏,而不是在評論中... – fleuryc

回答

0

謝謝你的回答。

不幸的是(實際上並不令人驚訝),不可能將附件中的數據放在一個mailto鏈接(duh)中!

2解決方案則:

  1. 如果你真的需要打開客戶端的電子郵件軟件,再準備一個mailto在郵件正文中的直接鏈接到該文件。爲此,您需要將文件存儲在收件人可以訪問的位置,以便直接鏈接。
  2. 如果您無法將文件存儲在收件人可以訪問的地方(例如您的應用程序是防火牆後面的Intranet應用程序),那麼唯一的解決方案是直接通過PHP發送電子郵件,而不使用客戶端軟件。
  3. 或者,也許你可以先通過PHP將郵件發送給發件人,並且他會自己將郵件轉發給收件人,以便他可以隨意修改郵件。但對於未受過培訓的用戶來說,這有點令人困惑......

乾杯!

0

mailto:URL方案顯示瞭如何創建指向新電子郵件的鏈接。瀏覽器/操作系統將在電子郵件客戶端中打開此電子郵件。

http://tools.ietf.org/html/rfc2368

1

我會做這樣的事情:

  • 從形式
  • 處理時提交表單
  • 用戶呈現一個鏈路的數據收集的信息,使用mailto:方案添加變量。

例如,像這樣在PHP:

if(isset($_POST['send_mail'])) 
{ 
    $to = $_POST['email_to']; 
    $subject = $_POST['email_subject']; 
    $body = 'This would be your defined body...'; 

    // Now prepare the URL and present it to the user: 
    $url = 'mailto:'.$to.'?subject='.rawurlencode($subject).'&body='.rawurlencode($body); 
    echo '<a href="'.$url.'" title="Send Email Now">Send Email</a>'; 

    // A boolean value to hide the form 
    // Necessary logic would need to be implemented on the page for this 
    $show_form = false; 
} 

你的形式可能是這樣的:

<form method="post"> 
    <label for="select_email_to">Recipient:</label> 
    <select name="email_to" id="select_email_to"> 
     <option value="[email protected]">John Doe</option> 
     <option value="[email protected]">Jane Doe</option> 
     <otion value="[email protected]">Foo Bar</otion> 
    </select> 
    <label for="input_subject">Subject</label> 
    <input type="text" name="subject" id="input_subject" /> 

    <input type="submit" name="send_mail" value="Prepare Email" /> 
</form> 

如果您需要包括一個文件,我把它上傳到服務器在提交表單時,然後在電子郵件正文中包含上傳文件的鏈接。