【问题标题】:php send mail from localhostphp从本地主机发送邮件
【发布时间】:2013-08-19 17:27:24
【问题描述】:

我是 php 新手。我正在尝试使用此代码从 php 发送邮件。

<?php

    $to      = 'sohil@gmail.com';
    $subject = 'The subject';
    $message = 'hello';
    $headers = 'From: sohil@yahoo.in' . "\r\n" .
        'Reply-To: receiver@yahoo.in' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

    mail($to, $subject, $message, $headers);

?>

我在 php.ini 中有更改设置

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

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

& 在 sendmail.ini 中

# A freemail service example
account Gmail
tls on
tls_certcheck off
host smtp.gmail.com
from sohil@gmail.com
auth on
user sohil@gmail.com
password xxxxxxxxx

# Set a default account
account default : Gmail

现在代码运行成功,但我没有收到任何邮件。

【问题讨论】:

  • 您必须在本地主机上安装邮件服务器。 PHPMailer
  • @Bora:我认为可以添加 gmail 或 yahoo smtp 邮件服务器。不是吗?
  • 或使用远程smtp服务器,如GMAIL
  • 您的代码看起来不错,但如果不在 localhost 上安装邮件服务器,它将无法在 localhost 上运行
  • gmail使用tls,可以配置默认邮件功能使用tls吗?

标签: php email


【解决方案1】:

您必须更改 php.ini 文件:

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

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = you@yourdomain

如果设置了 localhost 将不起作用,因此请更改为您的邮件服务器。

【讨论】:

  • 你能为 ubuntu 或 linux 用户指定一些东西吗?
【解决方案2】:

默认情况下您不会安装 SMTP 服务器,因此您无法直接从 localhost 发送电子邮件。您可以在本地设置 SMTP 服务器,也可以使用第三方 SMTP 服务器。 查看http://www.mittalpatel.co.in/php_send_mail_from_localhost_using_gmail_smtp,它让您深入了解如何使用第三方 SMTP 服务器从 localhost 发送邮件。

【讨论】:

  • 此评论中的链接帮助我在 Mac 上本地设置了我的 smtp。谢谢!
  • @surfbird0713 很高兴知道它对您有所帮助! :-)
【解决方案3】:

该功能在您的本地主机上不起作用,因为本地主机不能用作 SMTP 服务器,请将您的内容上传到安装了 SMTP 的有效服务器,然后进行邮件呼叫。

【讨论】:

    【解决方案4】:

    您的服务器没有本地邮件服务器。

    解决办法很少:

    • 如果您有足够的权限,请安装本地邮件服务器
    • 更改您的 PHP 设置以使用其他邮件服务器(其他开放式邮件服务器或基于身份验证的邮件服务器,如 Gmail、Yahoo 等)
    • 使用支持 IMAP / POP3 的可用邮件库之一来处理邮件发送。 SwiftMailer 或 Pear Mail 是最常用的一种。

    【讨论】:

      【解决方案5】:

      尝试在你的 php.ini 中设置以下内容,

      1. “SMTP”到“mail.YourDomain.com”
      2. “smtp_port”到“25”

      或者您也可以使用 php 脚本设置此选项,

      // 请指定您的邮件服务器或您要使用的其他邮件服务器。(例如 gmail、雅虎)

      ini_set("SMTP","mail.YourDomain.com");
      

      // 请指定 SMTP 号 25 和 8889 是有效的 SMTP 端口。

      ini_set("smtp_port","25");
      

      【讨论】:

        【解决方案6】:

        这是给我答案的链接:

        安装“fake sendmail for windows”。如果你没有使用 XAMPP 你可以在这里下载:http://glob.com.au/sendmail/sendmail.zip

        修改 php.ini 文件以使用它(注释掉其他行):

        邮件功能

        仅适用于 Win32。

        SMTP = smtp.gmail.com
        
        smtp_port = 25
        

        仅适用于 Win32。

        sendmail_from = <e-mail username>@gmail.com
        

        仅适用于 Unix。你也可以提供参数

        (default: "sendmail -t -i").
        
        sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"
        

        (忽略“仅 Unix”位,因为我们实际上使用的是 sendmail)

        然后您必须在安装 sendmail 的目录中配置“sendmail.ini”文件:

        发送邮件

        smtp_server=smtp.gmail.com
        smtp_port=25
        error_logfile=error.log
        debug_logfile=debug.log
        auth_username=<username>
        auth_password=<password>
        force_sender=<e-mail username>@gmail.com
        

        【讨论】:

          【解决方案7】:

          过去几周我在我的 centos 盒子上遇到了这个问题,将这个问题分享给其他人也遇到了 php 中的 mail() 没有发送的问题...这解决了我所有的 mail() php 脚本的问题。

          // Enable the sendmail in selinux
          setsebool -P httpd_can_sendmail 1
          
          // Add the following to /etc/postfix/main.cf
          relayhost = smtp.server.com
          
          // Then from command line
          service postfix restart
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-01-20
            • 2016-01-31
            • 1970-01-01
            • 2016-07-22
            相关资源
            最近更新 更多