2014-07-23 72 views
0

我想使用Swift梅勒發送附件的電子郵件。電子郵件沒有發送。我對PHP相當陌生,所以這可能是一個簡單的問題,但我無法弄清楚。代碼:Swift梅勒沒有發送電子郵件

<?php 

require_once 'swift/lib/swift_required.php'; 

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465) 
    ->setUsername('my gmail address') 
    ->setPassword('my gmail password') 
    ; 

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

$message = Swift_Message::newInstance() 
    ->setSubject('subject') 
    ->setFrom(array('[email protected]' => 'John Doe')) 
    ->setTo(array('[email protected]' => 'Jane Doe')) 
    ->setBody('body') 
    ->attach(Swift_Attachment::fromPath('image.png')) 
    ; 

echo('test 1'); 

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

echo('test 2'); 

printf("Sent %d messages\n", $numSent); 

if ($mailer->send($message)) 
{ 
    echo "Sent\n"; 
} 
else { 
    echo "Failed\n"; 
} 
?> 

swift_required.php被成功包含在內。我的測試1回聲運行,但測試2回聲永遠不會。這讓我認爲問題存在於$ numSent變量中。當然,這個問題仍然非常廣泛,但希望可以稍微縮小一些。此外,沒有低於$ numSent工作的功能,所以它並沒有告訴我是否我的電子郵件被髮送或沒有。

想通了,原來你需要使用「TLS://smtp.gmail.com」。

+0

使用[在Swiftmailer文檔中提供的調試信息(http://swiftmailer.org/docs/sending.html#finding-out-rejected-addresses)以及[Swiftmailer記錄器插件( http://swiftmailer.org/docs/plugins.html#logger-plugin)幫助您縮小問題範圍。總而言之,你需要學會有效地調試代碼(從你寫的東西,好像你已經做了自己沒有調試工作的話)。 – esqew

回答

0

如果第二回聲不出現,PHP必須退出!與函數ini_set組合

使用的error_reporting(E_ALL)( '的display_errors',1),並添加錯誤處理程序如下圖所示:

set_error_handler(function($severity, $message, $file, $line) 
{ 
    if(!(error_reporting() & $severity)) 
    { 
     return; 
    } 
    throw new ErrorException($message, $severity, $severity, $file, $line); 
}); 

這將導致即使通知拋出一個異常,結合E_ALL。

<?php ini_set('display_errors', 1); 
error_reporting(E_ALL); 
//@todo: add the error handler here 
try 
{ 
    //every code in the app must be wrapped in this try statement. 
    //require('file_that_mails_or_whatever.php'); 
} 
catch(Exception $e) 
{ 
    echo $e->getMessage() . '<br>'; 
    echo '<pre>' . $e->getTraceAsString() . '</pre>'; 
} 
+1

好吧,我這樣做了,但只能得到一個空白頁面。你知道什麼可能會導致這種情況嗎? – Will

+0

這可能是因爲的display_errors /錯誤報告被覆蓋在其他地方。 你有權訪問你的apache錯誤日誌嗎? – twicejr