2011-04-07 130 views
1

我想使用php代碼發送一個構造電子郵件。我嘗試過所有解決方案,如mail()和phpmailer,但沒有任何工作。這裏是我的代碼mail()未使用PHP接收電子郵件

ini_set(sendmail_from, "[email protected]"); 
ini_set(SMTP, "aspmx2.googlemail.com"); 
ini_set(smtp_port, 25); 
$username = "xyz"; 
$password = "password"; 
$to=$email; 
$subject="Activate you account"; 
$message=" 
Hello $fullname, \n \n 
    "; 
$headers="From: [email protected] domainname.net"; 
mail($to, $subject, $message, $headers); 
die ("You have been registerd. Check you email to activate your account!"); 

我在頁面上獲得「You have been registered. Check you email to activate your account」消息,但我沒有收到郵件。

我嘗試沒有ini_set()但它仍然無法正常工作。我也在php.ini文件中設置了SMTP和端口,但它仍然不起作用。

請幫忙!! 感謝

+0

歡迎來到俱樂部。用PHP發送電子郵件非常困難。我還沒有成功。 – systemovich 2011-04-07 19:17:31

+0

[Gmail的SMTP服務器](http://mail.google.com/support/bin/answer.py?answer=13287)受SSL/TLS保護,並要求進行身份驗證,這是PHP的'mail()'無法執行的操作。 – Charles 2011-04-07 19:22:45

+1

網絡上的許多免費託管服務不允許您使用其他SMTP服務器發送電子郵件。如果您使用自己的PC,請確保PHP可以訪問網絡。檢查Apache設置等。 – Hossein 2011-04-07 19:25:07

回答

1

把點這裏:

你打電話mail不檢查返回代碼 - 這意味着你知道你試圖發送消息,但你不知道它是否成功。這對調試沒有幫助。

其次,Gmail需要加密連接才能允許您進行身份驗證。而標準的SMTP連接沒有加密。

0

嘗試使用PHPmailer發送電子郵件 我聽說過很多很棒的事情。 PHPMailer的配置的

樣品

$mail->Mailer = "smtp"; 
$mail->Host = "ssl://smtp.gmail.com"; 
$mail->Port = 465; 
$mail->SMTPAuth = true; // turn on SMTP authentication 
$mail->Username = "[email protected]"; // SMTP username 
$mail->Password = "password"; // SMTP password 
+0

我用phpmailer發送電子郵件。如果我使用$ host =「ssl://smtp.gmail.com」;和$ port = 465;然後我成功地收到電子郵件但如果我使用相同的腳本$ host =「aspmx2.googlemail.com」;和$ port =「25」;然後得到錯誤,「SMTP錯誤:無法連接到SMTP主機。郵件錯誤:SMTP錯誤:無法連接到SMTP主機。」任何建議?請幫忙 – user695575 2011-04-08 00:16:55

+0

第一種方法是發送電子郵件的正確方式,那就是你應該怎麼做! – Aviatrix 2011-04-09 16:23:37

4

你不實際設置的mail()呼叫的用戶名/密碼。你所做的只是設置一些變量,然後不以任何方式爲郵件使用這些變量。因此,您嘗試通過Google發送郵件失敗,因爲您沒有進行身份驗證。

但正如其他答案所說,不要使用內置的mail()函數。改爲使用PHPMailerSwiftmailer。它們更容易使用,處理所有做文件附件和多部分MIME郵件的醜陋的東西,並且在一個不錯的OOP接口後面完成。

+0

用於swiftmailer的+1 – Tony 2011-04-07 19:28:23