29

如何从本地 SMTP 发送邮件(使用 Wamp、Xampp 等)?PHPmail()似乎无法在本地运行。

任何人都可以给出指示吗?

4

6 回答 6

37

方法 1(首选)- 使用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.

如果您需要使用另一台计算机的 FROM 收件人发送邮件,您需要允许从外部帐户投递到外部帐户。为此,请按照下列步骤操作:

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 的电子邮件,大多数住宅计算机都在使用。解决方法是使用 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)
*ps 对于某些人,可能还需要取消勾选以下所有内容require SMTP authentication

  • 对于本地:设置>高级>IP范围>“我的电脑”
  • 对于外部:设置>高级>IP范围>“Internet”

方法 2 - 使用 SendMail

您可以使用SendMail 安装


方法 3 - 使用不同的方法

使用这些方法中的任何一种。

于 2013-05-30T13:44:00.240 回答
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
    • 默认域=本地主机
    • error_logfile=error.log
    • debug_logfile=debug.log
    • auth_username=[your_gmail_account_username]@gmail.com
    • auth_password=[your_gmail_account_password]
    • pop3_server=
    • pop3_username=
    • pop3_password=
    • force_sender=
    • force_recipient=
    • 主机名=本地主机

    • 访问您的电子邮件帐户。单击齿轮工具 > 设置 > 转发和 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 服务器

我希望这对你有用..

于 2014-06-21T08:53:19.900 回答
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();
于 2013-05-30T07:54:45.873 回答
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 服务器,它就会开始工作。请享用 ...

于 2013-05-30T09:13:21.977 回答
0

我更喜欢使用 PHPMailer 脚本从 localhost 发送电子邮件,因为它允许我将我的 Gmail 帐户用作 SMTP。您可以从http://phpmailer.worxware.com/找到 PHPMailer 。有关如何将 gmail 用作 SMTP 或任何其他 SMTP 的帮助,请访问 http://www.mittalpatel.co.in/php_send_mail_from_localhost_using_gmail_smtp。希望这可以帮助!

于 2014-08-18T07:16:40.493 回答
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

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

你的问题将得到解决。

在 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

于 2014-03-12T18:41:35.210 回答