簡體   English   中英

用PHP發送電子郵件

[英]Emailing in PHP

我找到了一些有關如何執行此操作的教程,但是它不起作用。 這是我簡單的電子郵件代碼:

<?php

$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$zone = $_POST['zone'];
$call_time = $_POST['call_time'];
$comment = $_POST['comment'];

$to      = 'MY EMAIL';
$subject = '$name is interested in your product!';
$message = 'name = $name\nemail = $email\nphone = $phone\ntimezone = $zone\nbest time to     call = $call_time\nmessage = $comment';

if(mail($to, $subject, $message))
{
   echo "The information was successfully sent.";
}
else
{
   echo "The information was NOT sent.";
}
?>

(一旦我成功了,我會加強安全性的)
那么有什么想法為什么不起作用? 我收到成功消息,但沒有收到電子郵件。

好的,所以我想我本可以更具體一些:

  • 我正在運行Mac OS X
  • 我目前正在MAMP(本地Apache,MySQL和PHP服務器類設備:D)上測試我的網站
  • 顯然,我在“收件人”字段中輸入了有效的電子郵件。
  • 當我將錯誤寫入日志文件時,我看不到任何

我正在運行Mac OS X

PHP可能會將電子郵件成功傳遞到您的本地smtp服務器(我認為是后綴)。 那會給你成功的信息。 可能您的計算機上的后綴未配置為實際成功發送電子郵件。 或端口25被您的ISP阻止。 或電子郵件服務器端的其他內容。

您的PHP很好。 我認為您需要解決SMTP服務器配置問題。

首先,您應該閱讀PHP郵件頁面 有很多陷阱。

我還將檢查以確保您實際上在運行PHP腳本的計算機上運行SMTP服務器。

在基於* nix的系統上,返回true的mail()僅表示PHP能夠與您系統上的sendmail(或其替代之一)進行通信。 True只是表明它在預期的位置找到了sendmail,並且能夠將郵件正確發送。

由於以下原因,返回值通常沒有用:如您所見,當郵件真的無法到達任何地方時,它將返回true,並且在某些情況下,它實際上可以返回false並成功發送郵件。

您已經表明您使用的是Mac,可以通過打開控制台找到一些錯誤消息。 最終,您可能不希望您的應用程序真正發送郵件,但是將本地郵件服務器配置為中繼可以使它發生。

嘗試使用Zend Framework中的Zend_Mail ,可能對您來說更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM