为php mail()函数设置SMTP详细信息[重复]

Posted

技术标签:

【中文标题】为php mail()函数设置SMTP详细信息[重复]【英文标题】:Setting SMTP details for php mail () function [duplicate] 【发布时间】:2011-08-30 22:34:45 【问题描述】:

我一直在寻找答案并尝试了很多方法来解决这个问题。

我的脚本在我的虚拟主机上运行良好,但将其移动到其他专用服务器时,邮件永远不会送达。现在我需要设置 SMTP 服务器,但不正确。

顺便说一句,使用 Gmail 应用程序。这就是代码的样子。

<?php

if(!$_POST) exit;

$email = $_POST['email'];


//$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]2,4\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
if(!eregi("@",$email ))
    $error.="Invalid email address entered";
    $errors=1;

if($errors==1) echo $error;
else
    $values = array ('name','email','telephone','message');
    $required = array('name','email','telephone','message');

    $your_email = "xxx@example.com";
    $email_subject = "New Messag: ".$_POST['subject'];
    $email_content = "New message:\n";

    foreach($values as $key => $value)
      if(in_array($value,$required))
        if ($key != 'subject' && $key != 'telephone') 
          if( empty($_POST[$value]) )  echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; 
        
        $email_content .= $value.': '.$_POST[$value]."\n";
      
    

    if(@mail($your_email,$email_subject,$email_content)) 
        echo 'Message sent!'; 
     else 
        echo 'ERROR!';
    


$mail->Mailer = "smtp";  
$mail->Host = "ssl://smtp.gmail.com";  
$mail->Port = 465;  
$mail->SMTPAuth = true; // turn on SMTP authentication  
$mail->Username = "user@gmail.com"; // SMTP username  
$mail->Password = "password"; // SMTP password 

?>

那么我该如何正确设置 SMTP 设置呢?

【问题讨论】:

看看这是一个完美的工作灵魂***.com/questions/712392/… 【参考方案1】:

仅在 Windows 下:您可以尝试使用 ini_set() functionDocs 进行 SMTPDocssmtp_portDocs 设置:

ini_set('SMTP', 'mysmtphost'); 
ini_set('smtp_port', 25); 

【讨论】:

如何在其中设置用户名、密码和加密类型, 完美。它工作正常.. 感谢您的帖子。【参考方案2】:

检查你的 php.ini,你可以在那里设置这些值。

这是 php 手册中的描述: http://php.net/manual/en/mail.configuration.php

如果您想在您的应用程序中使用多个不同的 SMTP 服务器,我建议使用“更大”的邮件框架,p.e. Swiftmailer

【讨论】:

我在那里有正确的设置。但仍然减量工作。它是一个简单的形式,所以我认为 php 邮件功能是这次最好的方式。 在 SMTP 握手中涉及到一些细节(有/无身份验证等),php mail 并不知道所有这些。对于简单的任务,内置的 php 邮件是解决手头问题的好方法,但请记住它有其局限性。 好吧,但在我的代码最后几行中,我设置了谷歌要求的设置。但是由于我使用外部 smtp 服务器将邮件发送到给定的电子邮件地址,我是否需要更改 php.ini 中的某些内容? 在 php.ini 中,这里有以下参数:smtp_server、smtp_port、auth_username 和 auth_password。也许启用 error_logfile 和 debug_logfile,它们可能会为您提供有关此处不正确的其他信息。【参考方案3】:

尝试从您的专用服务器远程登录到端口 465 上的 smtp.gmail.com。它可能被您的互联网提供商阻止

【讨论】:

以上是关于为php mail()函数设置SMTP详细信息[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP Mail 函数

如果使用 SendGrid API,则禁用 PHP mail() 函数

PHP中 Warning: mail(): Failed to connect to mailserver at "stmp.163.com" port 25, verify yo

php mail function error -> Warning: mail() [function.mail]: SMTP server response: 530 5.7.0 Must

WP Mail SMTP插件解决Contact Form 7表单提交失败问题

警告:mail() [function.mail]:无法连接到邮件服务器