2011-10-15 57 views
3

我有一個快速郵件的問題,它不是發送消息給用戶我提取庫到公司文件夾在我的網站,並創建了以下消息快速郵件發送:Swift Mailer有問題不發送郵件

NOTE:如果您可以建議除SwiftMailer以外的其他解決方案,請發表評論。

require_once 'inc/lib/swift_required.php'; 

    //Create the Transport 
    $transport = Swift_SmtpTransport::newInstance('mail.mywebsite.com', 25) 
    ->setUsername('[email protected]') 
    ->setPassword('myPassword') 
    ; 

    $mailer = Swift_Mailer::newInstance($transport); 

    //Define Message Subject 
    $message = Swift_Message::newInstance('myWebsite Registration') 

    //e-mail from 
    ->setFrom(array('[email protected]' => 'myWebsite')) 
    //e-mail to 
    ->setTo(array('$email1' => '$username')) 
    //e-mail body 
    ->setBody(' 

    Message body Here 

    ') 
    ; 

    $result = $mailer->send($message); 

    //Show user message after message has been sent 
    include_once 'msgToUser.php'; 
    exit(); 

我測試了它,我沒有得到消息,我不明白爲什麼,我也跟着在官方網站的說明:http://swiftmailer.org/docs/sending.html

任何人都可以提出的問題是什麼?

NOTE:我之前使用PHP mail();函數發送電子郵件,但他們被歸類爲垃圾郵件。如果可能的話,任何人都可以建議解決方案如何使用mail();並使電子郵件不是垃圾郵件?請不要建議這樣的:使用您的主機服務器而不是您的域名,例如而不是使用[email protected]使用[email protected]

+0

你檢查了php錯誤日誌嗎? –

+0

現在檢查它,不給任何錯誤。 – Ilja

+0

它在我改變爲swift郵件之前做了工作,我使用了mail();功能,但所有電子郵件都發送到垃圾郵件,所以我決定改變它。 – Ilja

回答

4

我擔心你的問題不能回答具體的,因爲旁邊具體技術問題,你可以在這裏面對的複雜問題需要多個地方被觸碰這是不平凡的。

發送問題

首先,您可以發送電子郵件與SwitfMailer,這應該 「只是工作」 TM。但是,如果您使用的傳輸方式(如SMTP服務器未傳送電子郵件)與SwiftMailer直接無關(因爲它不會與PHP mail相關)。

但是,您可以使用$result從SwitfMailer找出是否SwiftMailer本身也陷入了發送電子郵件的任何錯誤。有關更多信息,請參閱SwiftMailer SMTP Troubleshooting (Archived Copy),以免您的SwiftMailer無法使用SMTP服務器。

垃圾郵件問題

這不能明確回答。類似的問題也會不時出現在這裏,但大多數情況下並沒有特別的回答,因爲這個主題延伸到了你的電子郵件的確切內容(電子郵件標題和正文垃圾郵件評分),它從哪個服務器發送(IP地址和基於主機名的垃圾郵件評分,例如黑名單以及主機名的DNS配置,請參閱SPF)和其他內容。

使用SwiftMailer可以幫助你可以交換郵件後端,如購買一個商業SMTP網關,其重點是降低郵件垃圾郵件負擔。然而,正如我在其他回答/評論中寫到的那樣:整個企業正在運行垃圾郵件 - 在「壞」和「好」方面。因此,信任任何這些實體並不總是可取的。

取而代之,您可以開始瞭解電子郵件在技術上的工作原理,垃圾郵件評分的工作方式以及如何通過正確配置的SMTP服務器發送正確的電子郵件。這是一些工作,因爲它非常廣泛,所以不能在這裏提供答案。

+0

鏈接已損壞。 – Mick

+0

@Patt:我更新了原始內容的鏈接(已存檔)。 – hakre

+0

太棒了!謝謝@hakre :) – Mick

0

確保您的服務器允許SMTP連接,如果是的話,檢查它是否在端口25上,而不是使用SSL。

然後,包裝一個try/catch塊代碼以捕捉任何異常。

try { 
echo '<pre>'; 
    $transport = Swift_SmtpTransport::newInstance('mail.mywebsite.com', 25)->setUsername('[email protected]')->setPassword('myPassword'); 
    $mailer = Swift_Mailer::newInstance($transport); 
    $message = Swift_Message::newInstance('myWebsite Registration') 
     ->setFrom(array('[email protected]' => 'myWebsite')) 
     ->setTo(array('$email1' => '$username')) 
     ->setBody('Message body Here'); 
    $result = $mailer->send($message); 
print_r($result); 
} catch (Exception $e) { 
    echo $e->getMessage(); 
} 
+0

這是一個問題,因爲我在頁面上使用SSL來發送電子郵件,有沒有通過它的方式嗎? – Ilja

0

嘗試檢查您的郵箱,當他的郵箱用盡配額,它不會發送任何電子郵件,我得到我的SMTP郵件帳戶發送電子郵件一旦我清理郵箱。我通過CPANEL設置郵箱配額,規定沒有人會將回復發送到此郵箱,但電子郵件收件人已將回復發送到此郵箱並使郵箱已滿。