[英]what should i be careful when sending email with PHP so it does not goes in spam(especialy Yahoo Mail)
[英]Joomla mail goes to spam folder: how to add text/plain when sending HTML email?
運行Joomla 2.5.8網站,所有服務器生成的電子郵件都被標記為垃圾郵件(盡管只有gmail!)。
我在巨大的資源http://www.mail-tester.com上運行了測試,而我得到的唯一否定分數是(spamassassin測試):
-1.105 MIME_HTML_ONLY Message only has text/html MIME parts
You should also include a text version of your message (text/plain)
我仔細研究了代碼,發現libraries / joomla / mail / mail.php沒有為Text設置AltBody。 我試過了:
public function setBody($content)
{
[...]
if (empty($this->AltBody))
$this->AltBody =JMailHelper::cleanText( strip_tags( $content));
而且有效! (10/10在郵件測試儀上)。 但這肯定是丑陋的。
我的問題是:
否則,我將編寫一個插件來執行替代操作:這非常重要,因為我們正在丟失似乎無法在gmail中找到垃圾郵件文件夾的20%的客戶,而且我真的不覺得自己是核心黑客30個站點。
絕對是可以與CMS一起提交的錯誤。 系統應為您處理。 這是開始提交錯誤的方法: https : //github.com/joomla/joomla-cms/blob/master/CONTRIBUTING.md
此外,您可以編寫一個插件來為您處理其覆蓋,而不是像您所說的那樣入侵核心文件。 我整理了一個基礎插件,可讓您根據需要在此處覆蓋核心類: https : //gist.github.com/dongilbert/3237387
如您所見,沒有什么太復雜了。 我們首先確保我們在Joomla,否則退出。 然后按照Joomla命名約定定義類,並將我們的配置文件包含在類構造中。 配置文件是將類注冊到自動加載器的位置。
在配置文件中,我們定義OVERRIDES路徑,然后開始將類注冊到JLoader。 我喜歡使事情井井有條,因此我的覆蓋目錄反映了joomla根目錄的結構,僅包含要覆蓋的類的路徑。 意思是如果我想覆蓋JFormField,我將有一個像這樣的結構(包括覆蓋目錄):
overrides/libraries/joomla/form/field.php
然后在config.php中添加:
JLoader::register('JFormField', OVERRIDES.'/libraries/joomla/form/field.php', true);
您也可以使用它來覆蓋核心組件類。 我用它來覆蓋com_media中的視圖類,如下所示:
overrides/component/com_media/view/imageslist/view.html.php
然后將其添加到配置中:
JLoader::register('MediaViewImagesList', OVERRIDES.'/components/com_media/view/imageslist/view.html.php', true);
您可以從上面的gist鏈接下載插件。 准備安裝到您的Joomla網站。 首先上載它,然后在插件目錄中添加替代目錄。 如果要首先添加所有文件並進行上傳,請確保將以下內容添加到overrides.xml文件中。
<folder>overrides</folder>
謝謝你! 我在Joomla 3中注意到了同樣的問題。
無論如何我用一個簡單的方法解決了
$mailer = JFactory::getMailer();
(...)
$mailer->setBody($messagebody);
$mailer->AltBody =JMailHelper::cleanText( strip_tags( $messagebody));
無需編輯源代碼,我也不認為應該將其報告為錯誤(應該可以將它設置為更合適的AltBody)-但最好將其正確記錄下來,或者也可以使用setAltBody()方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.