如何在 XAMPP 中配置 php 邮件

Posted

技术标签:

【中文标题】如何在 XAMPP 中配置 php 邮件【英文标题】:How to configure php mail in XAMPP 【发布时间】:2014-05-22 00:19:15 【问题描述】:

我使用的是 Windows Server 2008 R2。我已经安装了 XAMPP,它安装了 mysqlphp 和 Apache。我还安装了 WordPress。我有几个问题似乎无法通过 Google 搜索得到直接答案。我已经搜索这些答案超过 8 小时了。

问题

    有没有办法安装 SMTP 服务器以与 Apache 一起工作?如果有,怎么做?

    我可以配置 php 邮件以在不使用 SMTP 的情况下工作吗?如果有,怎么做?

问题:

我已经在 WordPress 和 sendmail.ini 中配置了邮件。我可以发送一封测试电子邮件,它说它已发送,但我从未收到电子邮件。我真的需要帮助来解决这个问题。我完全不知所措。

在下方发送邮件输出

Test Message Sent

The result was:

bool(true)

The full debugging output is shown below:

object(PHPMailer)#232 (65) 
  ["Priority"]=>
  int(3)
  ["CharSet"]=>
  string(5) "UTF-8"
  ["ContentType"]=>
  string(10) "text/plain"
  ["Encoding"]=>
  string(4) "8bit"
  ["ErrorInfo"]=>
  string(0) ""
  ["From"]=>
  string(23) "myemail@email.com"
  ["FromName"]=>
  string(12) "Joe Randolph"
  ["Sender"]=>
  string(23) "myemail@email.com"
  ["ReturnPath"]=>
  string(0) ""
  ["Subject"]=>
  string(50) "WP Mail SMTP: Test mail to myemail@email.com"
  ["Body"]=>
  string(68) "This is a test email generated by the WP Mail SMTP WordPress plugin."
  ["AltBody"]=>
  string(0) ""
  ["MIMEBody":protected]=>
  string(69) "This is a test email generated by the WP Mail SMTP WordPress plugin.
"
  ["MIMEHeader":protected]=>
  string(364) "Date: Wed, 9 Apr 2014 01:55:32 +0000
Return-Path: myemail@email.com
From: Joe Randolph 
Message-ID: <2c046a69376cf33b2ede557c0e3f3e8a@127.0.0.1>
X-Priority: 3
X-Mailer: PHPMailer 5.2.4 (http://code.google.com/a/apache-extras.org/p/phpmailer/)
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=UTF-8
"
  ["mailHeader":protected]=>
  string(88) "To: myemail@email.com
Subject: WP Mail SMTP: Test mail to myemail@email.com
"
  ["WordWrap"]=>
  int(0)
  ["Mailer"]=>
  string(4) "mail"
  ["Sendmail"]=>
  string(18) "/usr/sbin/sendmail"
  ["UseSendmailOptions"]=>
  bool(true)
  ["PluginDir"]=>
  string(0) ""
  ["ConfirmReadingTo"]=>
  string(0) ""
  ["Hostname"]=>
  string(0) ""
  ["MessageID"]=>
  string(0) ""
  ["MessageDate"]=>
  string(0) ""
  ["Host"]=>
  string(9) "localhost"
  ["Port"]=>
  int(25)
  ["Helo"]=>
  string(0) ""
  ["SMTPSecure"]=>
  string(3) "ssl"
  ["SMTPAuth"]=>
  bool(false)
  ["Username"]=>
  string(0) ""
  ["Password"]=>
  string(0) ""
  ["AuthType"]=>
  string(0) ""
  ["Realm"]=>
  string(0) ""
  ["Workstation"]=>
  string(0) ""
  ["Timeout"]=>
  int(10)
  ["SMTPDebug"]=>
  bool(true)
  ["Debugoutput"]=>
  string(4) "echo"
  ["SMTPKeepAlive"]=>
  bool(false)
  ["SingleTo"]=>
  bool(false)
  ["SingleToArray"]=>
  array(0) 
  
  ["LE"]=>
  string(1) "
"
  ["DKIM_selector"]=>
  string(0) ""
  ["DKIM_identity"]=>
  string(0) ""
  ["DKIM_passphrase"]=>
  string(0) ""
  ["DKIM_domain"]=>
  string(0) ""
  ["DKIM_private"]=>
  string(0) ""
  ["action_function"]=>
  string(0) ""
  ["Version"]=>
  string(5) "5.2.4"
  ["XMailer"]=>
  string(0) ""
  ["smtp":protected]=>
  NULL
  ["to":protected]=>
  array(1) 
    [0]=>
    array(2) 
      [0]=>
      string(23) "myemail@email.com"
      [1]=>
      string(0) ""
    
  
  ["cc":protected]=>
  array(0) 
  
  ["bcc":protected]=>
  array(0) 
  
  ["ReplyTo":protected]=>
  array(0) 
  
  ["all_recipients":protected]=>
  array(1) 
    ["myemail@email.com"]=>
    bool(true)
  
  ["attachment":protected]=>
  array(0) 
  
  ["CustomHeader":protected]=>
  array(0) 
  
  ["message_type":protected]=>
  string(5) "plain"
  ["boundary":protected]=>
  array(3) 
    [1]=>
    string(35) "b1_2c046a69376cf33b2ede557c0e3f3e8a"
    [2]=>
    string(35) "b2_2c046a69376cf33b2ede557c0e3f3e8a"
    [3]=>
    string(35) "b3_2c046a69376cf33b2ede557c0e3f3e8a"
  
  ["language":protected]=>
  array(0) 
  
  ["error_count":protected]=>
  int(0)
  ["sign_cert_file":protected]=>
  string(0) ""
  ["sign_key_file":protected]=>
  string(0) ""
  ["sign_key_pass":protected]=>
  string(0) ""
  ["exceptions":protected]=>
  bool(true)

下面是 sendmail.ini 的代码 - 我不确定它是否配置正确

; configuration for fake sendmail

; if this file doesn't exist, sendmail.exe will look for the settings in
; the registry, under HKLM\Software\Sendmail

[sendmail]

; you must change mail.mydomain.com to your smtp server,
; or to IIS's "pickup" directory.  (generally C:\Inetpub\mailroot\Pickup)
; emails delivered via IIS's pickup directory cause sendmail to
; run quicker, but you won't get error messages back to the calling
; application.

smtp_server=mail.localhost.com

; smtp port (normally 25)

smtp_port=25

; SMTPS (SSL) support
;   auto = use SSL for port 465, otherwise try to use TLS
;   ssl  = alway use SSL
;   tls  = always use TLS
;   none = never try to use SSL

smtp_ssl=auto

; the default domain for this server will be read from the registry
; this will be appended to email addresses when one isn't provided
; if you want to override the value in the registry, uncomment and modify

;default_domain=mydomain.com

; log smtp errors to error.log (defaults to same directory as sendmail.exe)
; uncomment to enable logging

error_logfile=error.log

; create debug log as debug.log (defaults to same directory as sendmail.exe)
; uncomment to enable debugging

;debug_logfile=debug.log

; if your smtp server requires authentication, modify the following two lines

auth_username=myemail@email.com 
auth_password=test1

; if your smtp server uses pop3 before smtp authentication, modify the 
; following three lines.  do not enable unless it is required.

pop3_server=
pop3_username=
pop3_password=

; force the sender to always be the following email address
; this will only affect the "MAIL FROM" command, it won't modify 
; the "From: " header of the message content

force_sender=

; force the sender to always be the following email address
; this will only affect the "RCTP TO" command, it won't modify 
; the "To: " header of the message content

force_recipient=

; sendmail will use your hostname and your default_domain in the ehlo/helo
; smtp greeting.  you can manually set the ehlo/helo name if required

hostname=localhost

【问题讨论】:

SMTP 和 Apache 是独立的服务器,它们不能相互协作。 SMTP 服务器也不需要在本地,如果配置正确,您甚至可以在 Gmail 或 Yahoo 等免费电子邮件中使用 SMTP。我对 Windows php 知之甚少,不知道 mail() 使用什么。使用正确配置的 SMTP 服务器更可靠、更容易通过垃圾邮件过滤器。 感谢您的信息。我知道如果没有单独的 SMTP 服务器,仍然可以使用 SMTP。 【参考方案1】:

问题 1:有没有办法安装 SMTP 服务器以与 Apache 一起工作?如果有,怎么做?

正如 Devon 在您的 cmets 中提到的,SMTP 和 Apache 是不同的服务器/服务,并且一起使用不同的协议。从我从你的问题中可以理解,是的,你可以在你的 2008 R2 服务器上设置内置的 SMTP 服务器,并使用它来发送邮件,只要你有来自服务器所在 ISP 的静态 IP(如果你有一个动态的您的服务器是您的 IP 的 IP 可能会被永久阻止,无法发送给除本地邮件服务器之外的任何人,在您的情况下,本地邮件服务器可能是交换服务器或仅驻留在本地用于测试目的的第 3 方电子邮件应用程序)。如果您真的想知道您的电子邮件发生了什么,我会按照此链接设置您的 SMTP 日志并查看通过 PHP 发送的邮件的实际情况。

http://www.vsysad.com/2012/04/setup-and-configure-smtp-server-on-windows-server-2008-r2/

另外,如果您使用 PHP 邮件功能或任何类型的邮件功能(不仅仅是 PHP),通常您不会在端口 25 上使用 SSL,除非您将 SMTP 配置为以这种方式使用 SMTP over SSL(您在插件上设置的设置实际上没有意义)。

问题 2:我可以配置 php 邮件以在不使用 SMTP 的情况下工作吗?如果有,怎么做?

您使用的插件能够让您不发送到 localhost(本地 SMTP 服务器),而是发送到另一个地址,如 gmail、yahoo、secureserver(godaddy)或任何其他邮件服务提供商,这将是您特定的 SMTP情况。根据提供商的不同,SMTP 配置将根据您对帐户的设置进行更改。

这里是一个简短的服务器列表,您可以使用这些服务器来代替 localhost,并且您需要 SMTP 身份验证(这需要其中一个帐户)。

http://www.arclab.com/en/amlc/list-of-smtp-and-pop3-servers-mailserver-list.html

【讨论】:

非常感谢您单独解决我的问题。我有另一个问题。有人告诉我,我们可以在服务器本身上设置 SMTP,但这需要安装 IIS。据我了解,一旦我安装并启用 IIS,它将与 Apache 冲突,本地主机将默认为 IIS。这是真的吗?如果是的话,有办法解决吗? 这可能会回答你的问题***.com/questions/5957947/…

以上是关于如何在 XAMPP 中配置 php 邮件的主要内容,如果未能解决你的问题,请参考以下文章

在 php 中使用 xampp 发送邮件

如何配置 XAMPP PHP 通过安全 smtp 我的 ISP 从本地主机发送邮件

发送电子邮件 - MAC 中的 PHP XAMPP

如何使用本地 xampp 和 php 联系人表单从我的 mac 发送邮件

如何在Mac上的PHP中从Xampp本地主机发送邮件?

XAMPP 1.8.0 中更改了 Sendmail 配置,无法再发送本地邮件