2012-03-11 72 views
2

從本地服務器發送我有我的文件mail.php:電子郵件在PHP

<html> 
<body> 

<?php 
if (isset($_REQUEST['email'])) 
//if "email" is filled out, send email 
    { 
    //send email 
    $email = $_REQUEST['email'] ; 
    $subject = $_REQUEST['subject'] ; 
    $message = $_REQUEST['message'] ; 
    mail("[email protected]", $subject, 
    $message, "From:" . $email); 
    echo "Thank you for using our mail form"; 
    } 
else 
//if "email" is not filled out, display the form 
    { 
    echo "<form method='post' action='mail.php'> 
    Email: <input name='email' type='text' /><br /> 
    Subject: <input name='subject' type='text' /><br /> 
    Message:<br /> 
    <textarea name='message' rows='15' cols='40'> 
    </textarea><br /> 
    <input type='submit' /> 
    </form>"; 
    } 
?> 

</body> 
</html> 

,但是當我運行它。我得到這個錯誤:

Warning: mail() [function.mail]: Failed to connect to mailserver at "127.0.0.1" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Program Files\EasyPHP-5.3.8.1\www\safepay247\mail.php on line 13 
Thank you for using our mail form 

什麼即時試圖做的是發郵件到我的郵箱ID:[email protected]使用PHP寫在輸入型的人的電子郵件。

我經歷了許多視頻,但沒有任何幫助我解決php.ini問題。

+0

你通常不希望從開發服務器發送郵件 - 如果它是從一個發送它不會在大多數情況下抵達動態IP。你有什麼樣的服務器?誰在管理它? – 2012-03-11 23:45:20

+0

@皮卡 - 我使用easyPHP作爲我的本地服務器。 – Samir 2012-03-11 23:46:52

+0

我會推薦使用swiftmailer(http:// swiftmailer。org /)而不是mail()函數。在你的情況下,你的錯誤的原因是你沒有在'php.ini'中設置有效的SMTP服務器。 – F21 2012-03-11 23:47:04

回答

1

您需要在您的php.ini中設置您的SMTP服務器。

您需要更改的指令列表爲here。這些設置應該由您的主機提供商提供。

但在此之前,我們超越自己,只是一個快速的警告:

  • 你被僞裝成某個設定的電子郵件中的「從」頭別的發送電子郵件。

  • 大多數SMTP服務器需要某種形式的身份驗證,例如使用Gmail SMTP服務器發送內容,我需要使用我的用戶名和密碼進行身份驗證。

  • 如果表單字段中的電子郵件與認證用戶名不匹配,則可能會被服務器拒絕,或者可能會更改爲反映認證用戶名。最後,它可能不適合垃圾郵件過濾器。

我的建議是,您從您自己的電子郵件帳戶發送電子郵件,例如([email protected])。然後在郵件正文中輸入客戶的電子郵件地址。您還可以將reply-to標題設置爲客戶的電子郵件地址,以便在您的電子郵件客戶端中單擊「回覆」將自動將其電子郵件地址放在「至」字段中。

+0

是的,我可以做到這一點,但我如何更改我的php.ini文件?我的意思是我必須改變它呢? – Samir 2012-03-12 00:13:16

1

試試這個:

  1. 打開php.ini

  2. 在php.ini文件中搜索名爲SMTP的屬性。一般你可以找到行SMTP=localhost。將localhost更改爲ISP的smtp服務器名稱。而組25

    SMTP = smtp.gmail.com #user your smtp address here 
    smtp_port = 25 
    
  3. 重新啓動Apache服務器或WAMP或XAMMP的端口。無論你使用什麼。

  4. 現在試着用郵件來發送郵件()函數

+0

我得到這個錯誤:警告:mail()[function.mail]:SMTP服務器響應:530 5.7.0必須首先發出一個STARTTLS命令。 gl4sm17489588obb.23在C:\ Program Files \ EasyPHP-5.3.8.1 \ www \ safepay247 \ mail.php on line 13 感謝您使用我們的郵件表格 – Samir 2012-03-12 00:16:51

+0

@DaveJarvis,它不傲慢:P – Starx 2012-11-08 04:30:37