2011-11-20 119 views
0

由於某種原因,我的PHP郵件沒有發送。PHP郵件功能不發送

這是我的腳本:

$tom = $email; 
$subjm = 'Company: Forgotten password'; 
$msgm = "-- DO NOT REPLY TO THIS EMAIL --\nHi,\nYou have forgotten your password.\nHereby we want to supply a you a new one.\nNew password: $pass"; 
$msgm = wordwrap($msgm, 70); 
$mail_sent = @mail($tom, $subjm, $msgm); 
echo "$tom <br /> $subjm <br /> $msgm"; 
echo $mail_sent ? "Mail sent" : "Mail failed"; 
echo "<br />Your new password has been sent to the email you've signed up with.<br />If you can't find the email, please wait a few minutes or check your spam box."; 

但是,它總是給我「郵件失敗」,我沒有看到它的郵箱。我檢查過我的腳本是否生成了正確的電子郵件地址($email),它是。所以我有點失落,爲什麼它不會發送。

+0

這完全取決於您使用的底層SMTP設置或您的服務器提供給PHP(即sendmail或qmail等)。 –

+2

'mail'通常使用服務器的內置郵件服務,sendmail。如果您從本地測試機發送電子郵件,並且它在Windows上 - 那麼您需要先設置郵件服務器。 – Furicane

+0

你用什麼SMTP服務器?上面沒有看到任何身份驗證信息。你使用PHP或Pear的Mail類嗎? – user978122

回答

1

作爲意見的後續行動,我聯繫了我的虛擬主機。他們告訴我,我無法使用郵件功能將電子郵件發送給不在域中的收件人。我正在與他們解決問題。

編輯:

我需要添加一個發件人:和從應該是一個@ mydomain.com地址,而不是外部的的emailadress。它現在有效。

+0

正是我告訴你:) – halfdan

2

您需要提供一個from地址以符合RFC。此外,返回值mail不會告訴您郵件是否已發送。它只會告訴你底層郵件服務器是否接受郵件。

要更好地發送郵件,不僅可以使用本地sendmail,也可以使用任何SMTP服務器查看phpmailer