(WAMP/XAMP)使用SMTP本地主机发送邮件

29
如何使用本地SMTP(使用Wamp、Xampp等)发送邮件?PHP mail() 看起来不能原生工作。
有人能给出指示吗?

使用xampp或wampp,您需要配置mercury以从本地主机发送电子邮件。您是否要求进行配置? - user2401931
Techwheels的这个对我有效!:) - Praveen Kumar Purushothaman
6个回答

38

方法一(首选) - 使用hMailServer


安装后,您需要进行以下配置才能正确地从WampServer发送电子邮件:

1) When you first open hMailServer Administrator, you need to add a new domain.
2) Click on the "Add Domain ..." button at the Welcome page. 
3) Under the domain text field, enter your computer's IP, in this case it should be 127.0.0.1.
4) Click on the Save button.
5) Go to Settings>Protocols>SMTP and select "Delivery of Email" tab
6) Enter "localhost" in the localhost name field.
7) Click on the Save button.

如果您需要使用另一台计算机的发件人地址发送邮件,则需要允许对外部帐户进行投递。要做到这一点,请按照以下步骤操作:

1) Go to Settings>Advanced>IP Ranges and double click on "My Computer" which should have IP address of 127.0.0.1
2) Check the Allow Deliveries from External to External accounts checkbox.
3) Save settings using Save button.

然而,Windows Live/Hotmail拒绝来自动态IP的所有电子邮件,而大多数住宅计算机都在使用这种类型的IP。解决方法是使用Gmail帐户。

注意使用Gmail用户:

1) Go to Settings>Protocols>SMTP and select "Delivery of Email" tab
2) Enter "smtp.gmail.com" in the Remote Host name field.
3) Enter "465" as the port number
4) Check "Server requires authentication"
5) Enter gmail address in the Username
6) Enter gmail password in the password 
7) Check "Use SSL"

(请注意,From字段在使用Gmail时无法正常工作)
*p.s. 对于一些人可能还需要取消选中要求SMTP身份验证下的所有内容:

  • 对于本地: Settings>Advanced>IP Ranges>"My Computer"
  • 对于外部: Settings>Advanced>IP Ranges>"Internet"

方法2 - 使用SendMail

您可以使用SendMail安装程序


方法3 - 使用不同的方法

使用这些方法之一


2
非常好的答案,而且有效。只是补充一下,我需要在高级选项 -> IP 范围 -> 我的电脑 下取消勾选“要求 SMTP 验证”下的所有内容,因为 php mail() 没有可用的验证方式。 - realtimez

5

这是实现此目标的步骤:

  • 通过 链接 下载 sendmail.zip

    • 现在,解压文件夹并将其放置在 C:/wamp/。确保这四个文件存在:sendmail.exe、libeay32.dll、ssleay32.ddl 和 sendmail.ini。
    • 打开 sendmail.ini 并进行以下配置:

    • smtp_server=smtp.gmail.com

    • smtp_port=465
    • smtp_ssl=ssl
    • default_domain=localhost
    • error_logfile=error.log
    • debug_logfile=debug.log
    • auth_username=[你的 Gmail 账户用户名]@gmail.com
    • auth_password=[你的 Gmail 账户密码]
    • pop3_server=
    • pop3_username=
    • pop3_password=
    • force_sender=
    • force_recipient=
    • hostname=localhost

    • 访问你的电子邮件帐户。点击齿轮工具 > 设置 > 转发和 POP/IMAP > IMAP 访问。点击“启用 IMAP”,然后保存更改。

    • 运行 WAMP 服务器。在 Apache 模块下启用 ssl_module。

    • 接下来,在 PHP 下启用 php_openssl 和 php_sockets。

    • 打开 php.ini 并按照以下代码进行配置。基本上,你只需要设置 sendmail_path。

[mail function]
; For Win32 only.
; http://php.net/smtp
;SMTP =
; http://php.net/smtp-port
;smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = you@domain.com
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t -i"
  • 重启Wamp服务器

我希望这对你有用。


1
我按照你的步骤做了,但启用Apache中的ssl_module后,wamp服务器停止运行。 - Maniprakash Chinnasamy
当你说“访问你的电子邮件账户”时,你是指我的个人Gmail账户(想知道它与所有这些有什么关系)还是另一种类型的账户? - ekashking

3

如果使用本地 xampp、wamp 等出现问题,您可以使用此库来发送电子邮件。

在调用电子邮件功能的文件中编写以下代码:

class.phpmailer.php,class.smtp.php

    include('class.phpmailer.php');

    $mail = new PHPMailer();  
    $mail->IsHTML(true);
    $mail->IsSMTP();
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = "ssl";
    $mail->Host = "smtp.gmail.com";
    $mail->Port = 465;
    $mail->Username = "your email ID";
    $mail->Password = "your email password";
    $fromname = "From Name in Email";

$To = trim($email,"\r\n");
      $tContent   = '';

      $tContent .="<table width='550px' colspan='2' cellpadding='4'>
            <tr><td align='center'><img src='imgpath' width='100' height='100'></td></tr>
            <tr><td height='20'>&nbsp;</td></tr>
            <tr>
              <td>
                <table cellspacing='1' cellpadding='1' width='100%' height='100%'>
                <tr><td align='center'><h2>YOUR TEXT<h2></td></tr/>
                <tr><td>&nbsp;</td></tr>
                <tr><td align='center'>Name: ".trim(NAME,"\r\n")."</td></tr>
                <tr><td align='center'>ABCD TEXT: ".$abcd."</td></tr>
                <tr><td>&nbsp;</td></tr>                
                </table>
              </td>
            </tr>
            </table>";
      $mail->From = "From email";
      $mail->FromName = $fromname;        
      $mail->Subject = "Your Details."; 
      $mail->Body = $tContent;
      $mail->AddAddress($To); 
      $mail->set('X-Priority', '1'); //Priority 1 = High, 3 = Normal, 5 = low
      $mail->Send();

2

如果在 php.ini 文件中指定了 SMTP 服务器和 SMTP 端口,那么你可以直接使用 PHP 的 mail() 函数发送邮件。首先向你的互联网服务提供商(ISP)请求 SMTP 服务器凭据

SMTP = smtp.wlink.com.np //put your ISP's smtp server

smtp_port = 25 // your ISP's smtp port.

那么只需重新启动Apache服务器,它就会开始工作。享受吧...

0

如果你们中的任何人在按照Afwe Wef的答案后遇到以下错误:

 Warning: mail() [<a href='function.mail'>function.mail</a>]: SMTP server response:

 550 The address is not valid. in c:\wamp\www\email.php

前往 php.ini

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = valideaccount@gmail.com

请将您用于配置hMailserver的电子邮件ID输入为valideaccount@gmail.com,放在sendmail_from前面。

这样您的问题就会得到解决。

在Windows 8上测试过Wamp server2.2(Apache 2.2.22,php 5.3.13)。

如果您也遇到以下错误,请参考:

"APPLICATION"   6364    "2014-03-24 13:13:33.979"   "SMTPDeliverer - Message 2: Relaying to host smtp.gmail.com."
"APPLICATION"   6364    "2014-03-24 13:13:34.415"   "SMTPDeliverer - Message 2: Message could not be delivered. Scheduling it for later delivery in 60 minutes."
"APPLICATION"   6364    "2014-03-24 13:13:34.430"   "SMTPDeliverer - Message 2: Message delivery thread completed."

你可能忘记将端口从25更改为465了


0

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