电子邮件发送本地主机

Posted

技术标签:

【中文标题】电子邮件发送本地主机【英文标题】:Email Sending Localhost 【发布时间】:2013-10-01 04:44:03 【问题描述】:

我想知道是否可以从本地主机发送电子邮件?我尝试了一些方法,但没有成功,我想它可能无法在本地主机中工作。代码如下:

           // Send the email:
            $message = " To activate your account, please click on this link:\n\n";
            $message .= WEBSITE_URL . '/activate.php?email=' . urlencode($Email) . "&key=$activation";
            mail($Email, 'Registration Confirmation', $message, 'From: ismaakeel@gmail.com');

            // Flush the buffered output.


            // Finish the page:
            echo '<div class="success">Thank you forregistering! A confirmation email has been sent to '.$Email.' Please click on the Activation Link to Activate your account </div>';

这是连接:

        /*Define constant to connect to database */
        DEFINE('DATABASE_USER', 'root');
        DEFINE('DATABASE_PASSWORD', 'buena');
        DEFINE('DATABASE_HOST', 'localhost');
        DEFINE('DATABASE_NAME', 'forum');
        /*Default time zone ,to be able to send mail */
        date_default_timezone_set('UTC');

        /*You might not need this */
        ini_set('SMTP', "mail.myt.mu"); // Overide The Default Php.ini settings for sending mail


        //This is the address that will appear coming from ( Sender )
        define('EMAIL', 'ismaakeel@gmail.com');

        /*Define the root url where the script will be found such as http://website.com or http://website.com/Folder/ */
        DEFINE('WEBSITE_URL', 'http://localhost');


       // Make the connection:
      $dbc = @mysqli_connect(DATABASE_HOST, DATABASE_USER, DATABASE_PASSWORD,
DATABASE_NAME);

       if (!$dbc) 
trigger_error('Could not connect to MySQL: ' . mysqli_connect_error());
       

有什么问题吗?还是不见了?

【问题讨论】:

它可以在 localhost 上正常工作,但您需要在其上设置一个 smtp 服务器。 哦是这样。我对此并不熟悉。但我会做一些研究。谢谢你的提示:) 【参考方案1】:

您的代码很好,问题在于 PHP 发送电子邮件的机制。在 Windows 中,PHP 的 mail() 函数没有开箱即用的解决方案,可用于发送电子邮件,这与 *NIX 系统相比,后者主要是 sendmail

在任何情况下,都可以在 Windows 中实现这样的机制,以允许 mail() 函数无缝工作。尽可能快,我不会在这里讨论如何做到这一点。请参考this clear step-by-step post,您将立即启动并运行。

【讨论】:

【参考方案2】:

要从 localhost 发送电子邮件,您需要在本地计算机上安装 smtp 服务器。我认为这不是必需的,因为有一个小程序可以侦听从本地主机发送的电子邮件,捕获它们并在您的默认电子邮件客户端中打开它们。

Here is a link

我强烈推荐这个程序。我也使用它,它是免费的:)

【讨论】:

谢谢 Beniamin,你真的拯救了我的一天。 :)【参考方案3】:

您需要一个 SMTP 服务器来使用 php 邮件。 为了使邮件功能可用,PHP 需要一个已安装且正常工作的电子邮件系统。要使用的程序由 php.ini 文件中的配置设置定义。 PHP 通常与 PEAR Mail Package 一起打包。在此站点中搜索 PEAR Mail。有关它的大量信息。

【讨论】:

我在一个与我有关的问题中找到了答案,它说用这个编辑 sendmail.ini:[sendmail] smtp_server=smtp.gmail.com smtp_port=587 error_logfile=error.log debug_logfile=debug.log auth_username=my-gmail-id@gmail.com auth_password=my-gmail-password force_sender=my-gmail-id@gmail.com 如果我更改首选电子邮件地址的值,这会奏效吗? @AnneBuena PEAR 邮件可能是更好的选择。它是用 PHP 打包的,如果不是 gmail 帐户,我不确定 gmail 是否允许您转发。

以上是关于电子邮件发送本地主机的主要内容,如果未能解决你的问题,请参考以下文章

从本地主机发送电子邮件

为啥我不能使用本地主机的邮件功能发送邮件? [复制]

如何正确地从本地主机发送电子邮件 [关闭]

如何使用codeigniter从本地主机发送电子邮件?

Mercury:从本地主机发送电子邮件

使用 gmail 从本地主机发送邮件