配置WAMP服务器发送电子邮件

103

这里有不同的方法:https://dev59.com/aGQn5IYBdhLWcg3wcWzM - T.Todua
9个回答

212

在本地主机上配置一个可用的电子邮件客户端是非常繁琐的,我花了很多时间和精力才尝试完成。我相信有更有经验的人可以帮忙,或者他们可能会同意我的看法。

如果你只是想测试一下,这里有一个非常好用的工具可以在本地测试邮件,几乎不需要任何配置:

http://www.toolheap.com/test-mail-server-tool/


16
可以在不进行任何配置的情况下使用WAMP。只需使用Windows Live Mail打开.eml文件即可(无需配置)。 - Benjamin Crouzier
5
如果你(像我一样)通过修改php.ini文件来得到这个好的解决方案,请记住默认配置:[mail function] SMTP = localhost smtp_port = 25 - BenL
2
在Win10上使用WAMP 4对我非常有效。感谢Wesley! - nickstaw
5
如果有人找不到下载链接,请前往此处:https://toolheap.com/test-mail-server-tool/users-manual.html - Desolator
3
如果您不想禁用广告拦截器而想下载此文件,请使用以下下载链接:https://toolheap.com/test-mail-server-tool/TestMailServerToolSetup.exe - Donald Duck
显示剩余10条评论

45

安装Fake Sendmail(下载sendmail.zip)。 然后配置C:\wamp\sendmail\sendmail.ini:

smtp_server=smtp.gmail.com
smtp_port=465
auth_username=user@gmail.com
auth_password=your_password

以上内容适用于 Gmail 帐户。然后配置 php.ini:
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"

现在,重新启动Apache,这基本上是你需要做的全部。

3
+1 表示支持一揽子解决方案。对于那些需要更详细步骤的人来说,这是一个额外的资源:http://blog.techwheels.net/send-email-from-localhost-wamp-server-using-sendmail/ - Prusprus
@gianjey 这个能用于其他账户比如Hotmail吗?还是必须要有一个已注册的Gmail账户才能使用? - Ryman Holmes
1
这个方法似乎不再起作用了...假设我已经正确设置了一切。 - Banning
1
简直不敢相信这一次就成功了!太神奇了。唯一让我困扰的部分是,如果你使用的是 Gmail,你需要输入你的 Gmail 用户名和密码,以便它可以登录到邮件客户端来发送邮件。注意:如果你要这样做,请创建一个新的 Gmail 账户,因为这会增加安全风险。 - William Howley
1
这并不相关,你仍然可以使用这种方法配置另一个SMTP服务器,而且在SO上已经有很多关于如何使用谷歌的SMTP服务器的问题(和答案),比如这个 - DarkBee
显示剩余5条评论

5
使用一个名为Send Mail的开源程序,你可以很容易地通过wamp发送邮件。我还在设置中,但这里有一个由乔·乔丹编写的绝佳教程。设置不到2分钟。

我刚试过了,它像魔法一样奏效!一旦我取消注释错误日志并发现它在pop3验证上停顿,我就将其移除了,然后成功地发送了邮件。祝你好运!

如果您正在使用Gmail帐户,则需要允许访问不安全的应用程序。为此,在完成本答案链接的教程中所述的操作并打开一个带有mail的PHP页面后,您将收到来自Google的电子邮件,提示有一次登录尝试被阻止。在该电子邮件中,点击“检查活动”,然后在打开的页面上点击“Yes, it was me”,然后点击“了解更多”,再点击“If 'Less secure app access' is off for your account”,然后点击“turn it back on”,最后打开开关即可。 - Donald Duck
此外,在调用 PHP 的 mail 函数时,您必须指定一个 from 头。例如,您可以这样做:mail("to@example.com", "Subject", "Content", "From: youremailaddress@gmail.com")(最后一个参数很重要)。 - Donald Duck

2

要发送电子邮件,您需要使用SMTP服务器。如果您有一个不需要SMTP身份验证的可用服务器(可能是您的ISP提供的),只需编辑php.ini文件中的“SMTP”([mail function])设置。

如果您的SMTP服务器需要身份验证,则无法使用内部的mail()函数,并且必须使用支持smtp auth的一些第三方类库,例如http://pear.php.net/package/Mail/


2
我尝试了测试邮件服务器工具,虽然它表现很好,但你仍然需要在某个客户端上打开邮件。我找到了Papercut: https://github.com/ChangemakerStudios/Papercut-SMTP (2021年更新的URL)
对于配置来说,它和测试邮件服务器工具一样易用(几乎是零配置),而且它还作为一个电子邮件客户端,提供了消息、头部、正文(方便查看HTML)和原始邮件(完整未解析的电子邮件)视图。
它还有一个“Sections”视图,可以将电子邮件中发现的不同媒体类型分开显示。
它拥有超级干净友好的用户界面、良好的日志查看器,并在您收到邮件时发送通知。
我觉得它非常完美,所以我想分享我的经验,或许能帮助到别人。

1
您的链接已经过时。这是2021年在Github上的项目链接:https://github.com/ChangemakerStudios/Papercut-SMTP - not_a_generic_user

1

由于Sendmail无法正常工作,我使用了msmtp 1.6.2 w32并且按照DeveloperSide的说明进行了操作。以下是设置过程的简要介绍:

在您的Gmail帐户下启用IMAP(msmtp发送电子邮件的帐户之一)

启用不太安全应用程序的访问权限。登录您的Google帐户并前往这里

编辑php.ini,找到并更改每个设置以反映以下内容:

; These are commented out by prefixing a semicolon
;SMTP = localhost
;smtp_port = 25

; Set these paths to where you put your msmtp files.
; I used backslashes in php.ini and it works fine.
; The example in the devside guide uses forwardslashes. 
sendmail_path = "C:\wamp64\msmtp\msmtp.exe -d -C C:\wamp64\msmtp\msmtprc.ini -t --read-envelope-from"

mail.log = "C:\wamp64\msmtp\maillog.txt"

在与您的msmtp.exe文件相同的目录中创建并编辑文件msmtprc.ini,如下所示,将其替换为您自己的电子邮件和密码:
# Default values for all accounts
defaults
tls_certcheck off
# I used forward slashes here and it works.
logfile C:/wamp64/msmtp/msmtplog.txt

account Gmail
host smtp.gmail.com
port 587
auth on
tls on
from ReplaceWithYourEmail@gmail.com
user ReplaceWithYourEmail@gmail.com
password ReplaceWithYourPassword
account default : gmail

我无法在Windows上安装msmtp。我只能找到tar文件。 - Oussama Essamadi
1
请尝试我的回答中的链接并下载 msmtp-1.6.2-w32.zip 文件。 https://sourceforge.net/projects/msmtp/files/msmtp/1.6.2/ - iyrin

1

不需要安装和配置自己的SMTP服务器,可以(更简单地)使用个人的Gmail邮箱,并配置PHP/WAMP来使用它并通过它发送电子邮件。

截至2023年,Gmail默认不支持个人用户的SMTP。因此,一些早期的答案似乎已经过时了。现在似乎需要先启用“双重身份验证”,然后生成“应用程序密码”。

所以让我们先配置Google端:

  1. 在您的Gmail中点击您的图标(右上角)->管理您的Google帐户->安全性->两步验证
  2. 设置它(您需要接收短信)。
  3. 然后当它设置好后再次进入“两步验证”
  4. 底部有一个“应用程序密码”->点击它
    • 然后将应用程序选择为“邮件”
    • 将设备选择为“Windows计算机”
    • 点击“生成”
  5. 您将获得一个由16个字母组成的密码,稍后将使用它。所以请复制它。
然后您下载带有TLS支持的Sendmail。基本上,它是一个应用程序,可以接收包含电子邮件地址、主题和正文的文本文件,然后连接到SMTP服务器并发送该邮件。
您可以从GitHub上下载它。

https://github.com/sendmail-tls1-2/main

我使用了这个文件来确保准确性: Sendmail_v33_TLS1_2.zip 解压并配置sendmail.ini如下(不要忘记将auth_usernameauth_password更改为您的电子邮件和密码):
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=tls
error_logfile=error.log
; note this is useful to uncoment and peek if something doesnt work
; debug_logfile=debug.log
auth_username=yourEmail@gmail.com
auth_password= that-16-letters-password-you-got-from-Google-App-Password

为了测试sendmail是否正常工作,请在sendmail文件夹中创建test.txt。像这样(但请编辑您的接收电子邮件地址):

From: anything@example.com 
To: FillYourReceive@email.com 
Subject: Your Subject 
Your Body message
Your Body message second line

然后进入命令行到 sendmail 文件夹并运行它:
sendmail.exe < test.txt

你将在几秒钟内收到电子邮件。如果没有收到,请检查error.log文件或在sednmail.ini中启用调试文件,并同时检查debug.log文件。
当这个工作正常后,配置你的php.iniwamp图标->PHP->php.ini [apache模块])。
;SMTP = localhost
;smtp_port = 25
sendmail_from ="admin@wampserver.vbe"
sendmail_path = "c:/wamp64/bin/Sendmail_v33_TLS1_2/sendmail.exe -t"
;mail.force_extra_parameters =
mail.add_x_header = Off

当然,编辑sendmail_path为您拥有的sendmail.exe的位置,并将其最佳复制到WAMP文件夹中。
重新启动Apache:wamp图标->Apache->服务管理'wampapache64'->重新启动服务 然后在您的文档根目录中创建一个名为test_mail.php的网页,其中包含以下数据。(只需记得更改FillYOurReceiveEmail):
<?php
echo "<br>sendmail_path:".strval(ini_get('sendmail_path'));

$from = "anything@anywhere.com";
$to = "FillYOurReceiveEmail@gmail.com";
$subject = "Your email subject";
$message = "Your email body message";
$headers = [ "From: $from" ];

$ret = mail( $to, $subject, $message, implode( '\r\n', $headers ) );
// OR - PHP 7.2.0 or greater
//mail( $to, $subject, $message, $headers );
echo "<br>ret :".strval($ret);
?>

然后在浏览器中打开页面localhost/test_mail.php 你会看到类似以下内容:
sendmail_path:c:/wamp64/bin/Sendmail_v33_TLS1_2/sendmail.exe
ret :1

您将收到一封发送至您填写的电子邮件的邮件。


0

我使用Mercury/32和Pegasus Mail来使mail()功能正常工作。如果您想要一个以您的域名结尾的电子邮件地址,它也非常适合用作邮件服务器。


0
你需要先下载Sendmail,它非常好用,可以发送到多个邮箱。你可以从这个Github地址https://github.com/sendmail-tls1-2/main下载它。在WAMP下创建一个名为sendmail的文件夹,并将其解压。然后打开sendmail.ini文件进行配置,如下所示,适用于Gmail。
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=auto
error_logfile=error.log
debug_logfile=debug.log
auth_username=youremail@gmail.com
auth_password= here place the gmail generated app code not your email password

在此之后,打开Wamp中bin>php目录下使用的PHP.ini文件,在[mail function]部分进行如下配置。
SMTP = localhost
smtp_port = 587
sendmail_from = youemail@gmail.com
auth_username = youremail@gmail.com
auth_password = here place the same gmail generated app code not your email password
sendmail_path =  path\to\Ampps\sendmail\sendmail.exe

还要检查一下php.ini文件中是否有没有分号的这个扩展(extension=php_openssl.dll),可以使用ctrl+f查找。 如果没有的话,就添加进去。还要检查这个文件是否存在于ext文件夹的bin>php>php8..>ext中(如果不存在就下载并粘贴进去)。 别忘了你还需要创建并使用谷歌应用密码。 - 前往你的谷歌账户。 选择安全性。 在“登录谷歌”下,选择两步验证。 在页面底部,选择应用密码。 输入一个能帮助你记住在哪里使用应用密码的名称。 选择生成,然后只需将生成的代码粘贴到php.ini和sendmail.ini中,就准备好了!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接