簡體   English   中英

如何使用 PHP 發送郵件?

[英]How to send mail using PHP?

我正在使用 Windows Vista 操作系統。 PHP、MySQL 作為數據庫和 Apache Z2567A5EC9705EB7AC2C984033E0618D 服務器。

我想向想要加入我網站的人發送通知。 但問題是當我點擊提交時。 它不會向用戶的 email 地址發送任何內容。

您認為最好的解決方案是什么?

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

你有幾個選擇:

  • 有內置郵件 function ,但是需要機器上運行一些MTA,不支持認證,發附件需要下功夫
  • Pear Mail package,如果你喜歡使用 Pear 的東西
  • 有一個很好的PHPMailer class ,我在過去幾年中使用過它,它真的很棒。 它喜歡它,因為它非常簡單且易於包含在您的項目中(只需一個簡單的包含調用),而且功能強大

Zend 框架Zend_Mail在發送電子郵件方面做得非常好! 你不需要使用整個 Zend 框架,你可以使用 Zend_Mail!

使用 Pear "Mail" class,這需要訪問在端口 25 上偵聽的單獨 SMTP 服務器。

示例代碼如下:

function sendmail($from, $to, $subject, $message, $headers)
{
    if (is_array($to)) {
            $recipients = implode(', ', $to);
    } else {
        $recipients = $to;
    }

    $errorlevel = error_reporting();
    $headers["From"] = $from;
    $headers["To"] = $to;
    $headers["Subject"] = $subject;

    $params = array();
    $params["host"] = "localhost";
    $params["port"] = "25";
    $params["auth"] = false;

    error_reporting($errorlevel & ~E_WARNING);

    $mail_object =& Mail::factory("smtp", $params);
    $res = $mail_object->send($recipients, $headers, $message);

    error_reporting($errorlevel);

    return $res;
}

注意:這是舊代碼 - 我現在不記得為什么我必須屏蔽 E_WARNING

我會推薦使用 swiftmailer 庫,該項目有很好的文檔並且易於使用。 它還為使用默認 PHP mail() function 提供了幾個優點。

http://swiftmailer.org/

看起來您沒有安裝郵件服務器。 Apache 或 PHP 不會為您發送郵件。 Php 正在為此注冊功能,但在內部您必須配置郵件 smtp 服務器來進行實際發送。

檢查這篇文章

只需查看“如何從 PHP 腳本發送 Email ”。 它使用郵件 function 發送郵件,並進一步提供本地和遠程 SMTP 配置的配置。

有很多方法可以通過 PHP 發送 email。 如果您不使用任何框架,則首先使用內部mail() function。 我建議使用Zend Framework的 Zend_Mail 組件。 我已經使用過它,它運行良好,並為您提供了一種很好的 Object 定向方式來使用 PHP 發送電子郵件。 但是如果你有理由使用mail() function,那么我想你可能需要知道這些:PHP mail() does not send email 本身。 它利用其他工具發送電子郵件。 如果您在 Unix 系統中運行您的應用程序, mail()會嘗試使用通常安裝在大多數類 Unix 系統上的 sendmail 程序發送 email。 在 Windows 平台上,沒有安裝 sendmail,因此 PHP 將嘗試使用 ZC2239A9319DE29F000ZF9 服務器發送 email。 所以你應該告訴 PHP 這個 SMTP 服務器在哪里,並提供 SMTP 服務器的用戶名/密碼,如果有的話。 您可以通過編輯 PHP 配置文件php.ini來完成此操作。 該文件是一個基於文本的配置文件,PHP 在執行時將使用它。 找到您的php.ini文件並在此文件中修改這些值:

SMTP = localhost
smtp_port = 25
sendmail_from = me@example.com

如果您不知道php.ini文件在哪里,請創建一個簡單的 PHP 文件,例如info.php並將此代碼放入其中:

<?php
phpinfo();
?>

運行您的頁面並搜索.ini 現在您知道php.ini文件在哪里。

暫無
暫無

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

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