2010-08-22 228 views
5

我有一個自定義表單(使用表單API創建),需要通過電子郵件發送上傳的文件。當前表單提交處理程序使用drupal_mail()發送沒有附件的電子郵件。發送帶附件的電子郵件

所以我正在尋找一個解決方案,正確地發送附件從Drupal的電子郵件。 Mime Mail似乎是一種矯枉過正,因爲不需要HTML郵件,模板和其他功能。但是我看到的唯一另一種方法是在處理我的hook_mail()實現中的郵件時,設置適當的標題並序列化郵件正文中的附件。

我錯過了什麼嗎?有沒有任何模塊可以處理這個問題?

+1

我只是想補充一點,當你附加文件時郵件將作爲MIME郵件發送。所以HTML部分不是「矯枉過正」,它可能只是與附件代碼相同的代碼。 – 2010-08-22 15:00:07

+0

我不需要/希望郵件正文在HTML中,我只需要/想要帶有附件的純文本電子郵件。任何事情都超出了範圍,我不想被要求處理它。 – 2010-08-22 15:15:03

+0

取決於這裏的結果:http://meta.stackexchange.com/questions/110752/should-we-migrate-questions-to-an-on-topic-site-if-the-asker-requests您可能決定再次標記它。現在解散。 – 2011-11-01 04:19:57

回答

3

Mimemail是最簡單的解決方案。無論是否矯枉過正,它都可以讓你通過一個函數調用來完成它。

如果你堅持,你可能有你自己的attachment sender:base64編碼你的附件,將它們添加到郵件正文,添加正確的標題,你就完成了。

0

Webform module允許您創建表單並具有可用作附件的文件選項。所有可用的表格組件都列在模塊的manual page上。

安裝Webform後將顯示爲內容類型。一旦保存了基礎知識,例如標題和要解決的電子郵件,您就可以添加所需的表單組件。

添加'文件'類型的組件,確保'電子郵件'(收件人)選項打勾,然後您將能夠自定義允許的文件類型,擴展名,大小和上傳文件夾。

+0

是的,我知道Webform可以做到這一點。但由於這是一個單獨的開發人員構建表單,並不是由網站的最終用戶修改的,所以它不適合基本的Webform用例。我想避免必須將帶有其他進程(各種數據庫更新)的Webform的整個UI可編輯表單堆棧帶入一個表單。 – 2010-08-22 15:11:16

+0

現在你告訴我們; 0) – CitrusTree 2010-08-22 15:12:27

+0

當然,你可以根本不給其他用戶管理Webforms的權限:0) – CitrusTree 2010-08-22 15:18:26

0

您可以使用Zend Framework。

function sendEmail($params){ 
    ini_set('include_path', 'inc/'); 
    require_once ('inc/Zend/Mail.php'); 

    $mail = new Zend_Mail(); 

    $mail->setSubject($params['subject']); 

    $mail->setBodyText($params['bodyText']); 
    $mail->setBodyHtml($params['bodyHtml']); 

    $mail->setFrom($params['fromEmail'], $params['fromName']); 
    $mail->addTo($params['toEmail'], $params['toName']); 

    // Finally, add an attachment 

    assert(file_exists($params['attachFile'])); 

    $at = $mail->addAttachment(file_get_contents($params['attachFile'])); 
    $at->type  = $params['attachType']; 
    $at->disposition = Zend_Mime::DISPOSITION_ATTACHMENT; 
    $at->filename = $params['attachName']; 

    $mail->send(); 
} 
+0

感謝您的更新! – SteAp 2011-11-02 22:02:19

1

您可以使用MIME郵件並強制郵件正文以純文本格式發送。以下是模塊自述文件的摘錄:

用法 該模塊可能是其他模塊需要的,但不是非常有用的 。一旦安裝,任何模塊可以通過 發送消息調用mimemail()函數:

$sender - a user object, text email address or an array with name, mail 
$recipient - a user object, text email address or an array with name, mail 
$subject - subject line 
$body - body text in HTML format 
$plaintext - boolean, whether to send messages in plaintext-only (default FALSE) 
$headers - a keyed array with headers (optional) 
$text - plaintext portion of a multipart e-mail (optional) 
$attachments - array of arrays with the file's path, MIME type (optional) 
$mailkey - message identifier 

return - an array containing the MIME encoded message 

最關鍵的事情是設置$明文參數設置爲True。現在你可以吃你的蛋糕,也可以吃。

0

您可以隨時查看Swift Mailer模塊,該模塊可讓您發送HTML(MIME)電子郵件,帶有內嵌圖像的電子郵件和帶附件的電子郵件。它也可以自動生成基於HTML電子郵件版本的純文本版本,最終可以讓用戶的電子郵件客戶端顯示首選版本(HTML或純文本)。

斯威夫特梅勒模塊可在http://drupal.org/project/swiftmailer

備案:我是該模塊的作者和維護者。

相關問題