簡體   English   中英

PHP郵件腳本未發送郵件

[英]PHP Mail Script not sending mail

我正在使用一個簡單的聯系表單,並且php腳本未向我的電子郵件發送電子郵件...該腳本成功運行,並且產生了以下代碼中所示的HTML輸出。 我試圖弄清楚,但我無法接收它來發送電子郵件。 我看過教程,似乎與許多教程具有相同的代碼。 我正在使用一個表單來在此處顯示用戶的輸入,

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dummy Code - Contact</title>
</head>

<body>

<form action="send_simpleform.php" method="post">
<p>Your name<br />
<input name="sender_name" type="text" size="30" /></p>
<p>Email<br  />
<input name="sender_email" type="text" size="30" /></p>
<p>Message<br />
<textarea name="message" cols="30" rows="5"></textarea></p>
<input name="submit" type="submit" value="Submit" />
</form>

</body>
    </html>

我的PHP腳本也可以在這里看到,

<?php
$msg = "Email sent from www.dummycode.com\n";
$msg .= "Sender's Name:\t $_POST[sender_name]\n";
$msg .= "Sender's E-mail:\t $_POST[sender_email]\n";
$msg .= "Sender's Message:\t $_POST[message]\n";
$to = "henry.harris@xxxxxxxxxxx.com";
$subject = "DummyCode.com";
$headers = "From: My web site <www.dummycode.com>\n";
$headers .= "Reply to: $_POST[sender_email]\n";
mail($to, $subject, $msg, $headers);
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dummy Code Contact Sent</title>
</head>

<body>

<h1>The following email has been sent</h1>

<p>Your Name:<br />
<? echo "$_POST[sender_name]"; ?>
<p>Your Email Adress:<br />
<? echo "$_POST[sender_email]"; ?>
<p>Message:<br />
<? echo "$_POST[message]"; ?>
</p>
</body>
</html>

我知道我對此非常了解,如果這對我來說是一個愚蠢的錯誤,那么對不起。 我真笨。 提前致謝。 請不要討厭。

-亨利

您在腳本中唯一可以做的就是檢查mail()函數的返回值。

如果為true ,則表示郵件已成功接受傳遞 但是,這並不意味着該消息實際上已經發送。

簡單的例子:

if (mail(...))
{
  // mail was accepted for delivery
}
else
{
  // not accepted
}

您應該看看swiftmailer 設置快速,簡單,並且文檔齊全。 錯誤處理是一流的!

好吧,我遇到了一些情況,好像郵件已經發送了,但在發送至的收件箱中卻看不到。 所以這是我要做的幾件事:

  1. 不要從本地主機發送郵件,除非您有可以發送出站郵件的郵件服務器
  2. 最好在遠程服務器上發送或測試您的郵件腳本
  3. 確保發件人的電子郵件地址與原始域相同
  4. 請勿使用與發件人的電子郵件不同的回復電子郵件-大多數電子郵件客戶都可能將其當作垃圾郵件吞噬或丟棄
  5. 驗證服務器允許的smtp端口並進行設置
  6. 驗證smtp服務器並進行設置
  7. 提供發送電子郵件的實際憑據
  8. 使用mailto:鏈接將用戶的電子郵件放在消息正文中的某個位置,以便您可以快速回復他們。 (如果他們使用腳本發送給您)。 如果您要發送給他們,則無需指定其他回復
  9. 確保指定編碼字符集,換行符以及可能會自動換行的自動換行功能
  10. 嘗試使用來自phpclasses.org的經過測試的PHP類

我一次拿一個,通常做對了才發郵件。 在您的代碼中,嘗試調整這些行並進行測試:

$headers = "From: My web site <www.dummycode.com>\n"; //Same as originating domain or email (just for tweaks)
$headers .= "Reply to: $_POST[sender_email]\n"; //Should be same as sender's email for a try

暫無
暫無

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

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