簡體   English   中英

無法在php mail()中使用變量$ _SERVER ['HTTP_HOST']

[英]Cannot use variable $_SERVER['HTTP_HOST'] in php mail()

我測試了這個:

<?php
 $to = "recipient@example.com";
 $subject = "Hi!";
 $server = $_SERVER['HTTP_HOST'];
 $body = "From: ". $server. "<br>";
 $body .= "Hi,\n\nHow are you?";
 if (mail($to, $subject, $body)) {
   echo("<p>Message successfully sent!</p>");
  } else {
   echo("<p>Message delivery failed...</p>");
  }
 ?>

盡管顯示“成功”的反饋,但它永遠不會向我發送電子郵件。 該代碼將起作用(實際發送電子郵件),但是如果我刪除了

$server = $_SERVER['HTTP_HOST'];

在電子郵件正文中。

很奇怪,這沒有道理嗎?

這只是一個PHP頁面。 我通過瀏覽器調用此頁面! 請試試 ...

更新! 好的,我沒有使用$ _SERVER ['HTTP_HOST'],而是直接使用字符串“ user.server.com”。 而且,它沒有用! 但是,當我稍微修改一個字符串(例如“ user.server.com.us”)時,它可以工作! 因此,基本上,郵件服務器會填充自己對域的引用,不確定為什么要這樣做...

某些垃圾郵件服務器會將您的郵件歸為體內網址的“垃圾郵件”。 不幸的是,除非您有權訪問發件人和收件人的郵件服務器日志,否則您將很難用mail()查找更具體的錯誤消息。 提供SwiftMailer或其他PHP Mailing庫以獲得更好的支持。

使用mail()函數時,需要指定“發件人”標頭。 請參考此文檔頁面,查找“ additional_headers”參數的“注釋”部分。

因此,您的mail()調用將如下所示:

mail($to, $subject, $body, 'From: some.guy@example.com');

當然,您不會收到它,因為這些天所有主要的Web郵件都使用反垃圾郵件過濾器,並且您的郵件可能被檢測為垃圾郵件。 解決方案是為$ from變量精確指定您的電子郵件,如果您未指定真實電子郵件,則將您的郵件檢測為垃圾郵件。

暫無
暫無

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

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