2010-07-21 34 views
1

我正在學習如何發送email.i已安裝應用服務器和文件 的php.ini-dist的和php.ini中,建議我做了如下改變如何在PHP中可靠地發送電子郵件?

SMTP=localhost 

[email protected] 

我換成localhost通過mail.ptcl。淨這是我的DSL提供商 和我的電子郵件地址[email protected]更換[email protected]

我收到以下消息時,我提交表單

「警告:電子郵件()[ function.mail]: 「sendmail_from」 未在php.ini或 定製設置 「來自:」 首標中缺少 C:\的appserv \ WWW \哈姆扎\ send_simpleform.php 上線14下面的電子郵件已 已發出:

哈姆扎:哈姆扎

[email protected]

消息:adasdas」

以下是我使用

腳本210
<html> 
<head> 
<title>Simple Feedback Form</title> 
</head> 
<body> 
<form method="post" action="send_simpleform.php"/> 
<p><strong>Your name</strong><br/> 
<input type="text" name="sender_name" size="30" /></p> 
<p><strong>Senders Email address</strong><br/> 
<input type="text" name="sender_email" size="30" /></p> 
<p><strong>Enter your Message here</strong><br/> 
<textarea name="message" cols="30" rows="5" wrap="virtual"></textarea></p> 
<p><input type="submit" value="send this form" name="submit"/></p> 
</form> 
</body> 
</html> 


<?php 
if(($_POST[sender_name]=="")||($_POST[sender_email]="")||($_POST[message==""]                           )) 
{ header("location=simple_form.html"); 
    exit; 
} 
$msg="E-MAIL SENT FROM WWW SITE\n"; 
$msg="Sender's Name: $_POST[sender_name]\n"; 
$msg="Sender's E-Mal I.D: $_POST[sender_email]\n"; 
$msg="Message:     $_POST[message]\n"; 
$to="[email protected]"; 
$subject="Web site feedback"; 
$mailholders="from my website<[email protected]>\n"; 
$mailheader="Reply-to: $_POST[sender_email]\n"; 
mail($to, $subject,$msg,$mailheaders); 
?> 
<html> 
<head> 
<title>Simple Feedback Form Sent</title> 
</head> 
<body> 
<h1>The following e-mail has been sent:</h1> 
<p><strong>Hamza:</strong><br\> 
<?php echo "$_POST[sender_name]";?> 
<p><strong>[email protected]</strong><br\> 
<?php echo "$_POST[sender_email]";?> 
<p><strong>Message:</strong><br> 
<? echo "$_POST[message]";?> 
</body> 
</html> 
+0

是錯誤消息沒有幫助你以任何方式? – SilentGhost 2010-07-21 10:36:48

+0

@沉默,我們在哪裏都是新鮮的。 – 2010-07-23 04:41:08

回答

0

這可能是simplier使用外部庫來發送郵件,如http://swiftmailer.org/而不是用php.ini中

這是從來沒有好是php.ini的依賴播放。

+2

'這是從來沒有好php.ini dependant.'這是什麼意思?你幾乎總是依賴於php.ini。並非所有配置選項都可用於運行時修改。同時,郵件庫是一個好主意,因爲它比'mail()'函數更容易使用。但是,如果事情沒有正確配置,他們不會爲你做傑克。 – 2010-07-21 10:37:16

+1

我的意思是,有時你必須在多臺服務器上部署腳本或站點,並且可能會發生你沒有修改php.ini的可能性。這就是爲什麼我不喜歡腳本太依賴於此。 – 2010-07-21 10:40:52

+0

這是一個公平的觀點,我認爲在你的發言中應該更明顯。你的意思是說'而不是玩php.ini' – 2010-07-21 10:45:19

0

試試這個:這在我的網站中工作。

$email = "your e-mail address"; 
$myname = "name"; 
$mymail = "reply Address"; 
    $subject = "SUBJECT LINE"; 
    $body = "TEXT GOES HERE"; 
    $headers = "Content-Type: text/plain; charset=us-ascii\nFrom: $myname <$mymail>\n 
    Reply-To: <$mymail>\nBCC:<$mymail>\nReturn-Path: <$mymail>\nX-Mailer: PHP"; 

      //send the email 
      if ($email != "") { 
       mail($email,$subject,$body,$headers); 
      } 
+3

「在我的網站上爲我工作」,哦ffs! – SilentGhost 2010-07-21 10:41:09

+0

@SilentGhost - 我知道這似乎是一個警察說,但是......它的確如此。我不記得更改php.ini文件中的任何內容,所以也許他只是在他的腳本中丟失了一些我不知道的東西。至少它是某種東西。 – webdad3 2010-07-21 10:47:22

+0

問題在於OP的錯誤消息指向「from」電子郵件標題的問題。你發佈的內容是在黑暗中忽略了這個重要位的全部鏡頭,並且它沒有設置from標題,所以它需要在php.ini中正確設置。 – 2010-07-21 10:51:59

2

我相信你至少有兩個問題:

  1. 我猜測php.ini-recommendedphp.ini-dist分別是一個例子,一個模板配置文件;對它們的修改可能不會影響您的PHP實例當前使用的「真實」php.ini。使用phpinfo()來確保您的配置是正確的。
  2. 垃圾郵件過濾器。傑夫阿特伍德有一個很好的blog post關於實施檢查服務器檢查您的電子郵件是否爲垃圾郵件時所做的檢查。不要忘記:

僅僅因爲你發送電子郵件並不意味着它會到達。

+0

對於第1點+1,良好的眼睛/解釋。 – 2010-07-21 10:55:07

+0

當我發送電子郵件時,我不會收到我的電子郵件地址[email protected]? – Rookie9 2010-07-21 11:19:20

+1

@rookie假設事情配置正確並且電子郵件未被垃圾郵件過濾器阻止。 – 2010-07-21 11:32:22

1

正如jhominal指出的那樣,您修改的php.ini文件僅僅是示例。你必須找出php.ini的位置,然後對其進行修改。

正如其他人所提到的那樣,您可以從標題設置自定義。但是,如果您沒有在php.ini中設置sendmail_from,則必須記得始終設置它。

無論如何,這裏是發送電子郵件與PHP的mail()函數的一個很好的文章/教程:

http://articles.sitepoint.com/article/advanced-email-php