AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 105403
Accepted
Nathan Long
Nathan Long
Asked: 2010-01-23 08:00:50 +0800 CST2010-01-23 08:00:50 +0800 CST 2010-01-23 08:00:50 +0800 CST

如何设置 PHP 以在 Apache 上发送电子邮件?(视窗)

  • 772

我在 Windows 上设置了一个 Apache 服务器(2.2.14),并从现有的 XAMPP 配置中借鉴了一些想法。我现在正在尝试为 PHP (5.3.1) 设置电子邮件功能。(它需要能够处理附件,就像 XAMPP 服务器一样。)

我注意到 XAMPP 带有用于 Windows 的假 sendmail,但是关于配置的一些事情对我来说没有意义。

以下是 XAMPP 的几行代码php.ini:

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"

这很奇怪,因为:

  • 它明确表示“仅适用于 Unix”,但
    • 我一直看到说要在 Windows 上使用这条线的教程,并且
    • 示例文件路径在 Unix 中甚至没有意义
  • sendmail_path默认被注释掉

我想知道是否sendmail.exe甚至有必要。因此,在我没有 的自定义 Apache 服务器上sendmail.exe,我进行了编辑,为、和.php.ini添加了正确的信息。有了它,它就可以发送邮件了!但这很慢。SMTPsmtp_portsendmail_from

然后我回到 XAMPP 服务器并重命名sendmail目录,希望禁用 sendmail。那种工作 - 我的 PHP 脚本声称已经发送,但什么也没发生。

所以我很困惑。

  • 我的 XAMPP 服务器已sendmail_path注释掉,但显然仍在使用它指向的程序。它是怎么知道的?
  • 我的 Apache 服务器没有任何内容sendmail_path,但可以在没有它的情况下以某种方式发送邮件。它是如何做到的?

我实际上需要做什么来配置 Apache 服务器以发送电子邮件?

php email apache-2.2 sendmail
  • 2 2 个回答
  • 36842 Views

2 个回答

  • Voted
  1. Best Answer
    Nathan Long
    2010-01-23T10:14:01+08:002010-01-23T10:14:01+08:00

    经过进一步搜索和测试,似乎:

    1. 在 Windows 上,PHP 的 mail() 函数不一定需要将电子邮件交给同一台计算机上的另一个程序;它可以自己连接到邮件服务器

    2. 然而,这是低效且缓慢的。

    3. 在服务器机器上设置虚假的 sendmailphp.ini并将'sendmail_path指令指向它可以更快地发送电子邮件。就我个人而言,我想象sendmail.exe着将数据咀嚼成可消化的好片段,然后像母鸟喂养她的婴儿一样吐到邮件服务器的嘴里。嗯!但也许我疯了。

    4. 如果你sendmail.exe输入C:\usr\bin,这允许一些期望在基于 Unix 的操作系统上运行的程序在 Windows 上运行

    这是PHP 手册中的一些信息,帮助我解决了这个问题。

    注意:mail() 的 Windows 实现在许多方面与 Unix 实现不同。首先,它不使用本地二进制文件来编写消息,而仅在直接套接字上运行,这意味着需要 MTA 侦听网络套接字(可以在 localhost 或远程计算机上)。

    和...

    注意:值得注意的是,mail() 函数不适合循环处理大量电子邮件。此函数为每封电子邮件打开和关闭一个 SMTP 套接字,效率不高。如需发送大量电子邮件,请参阅 » PEAR::Mail 和 » PEAR::Mail_Queue 包。

    • 5
  2. Scott Alan Miller
    2010-01-23T08:26:49+08:002010-01-23T08:26:49+08:00

    Apache 并没有真正参与任何发送电子邮件的配置。这完全由 PHP 和本地 MTA 处理。MTA 几乎总是 Sendmail 或 Postfix。对此的配置位于名为 sendmail_path 的 [mail function] 部分下的 php.ini 文件中。

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • mod_rewrite 不转发 GET 参数

  • Exchange 2007 的备份解决方案

  • 更改 PHP 的默认配置设置?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve