为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 进行 SMTP
Docs 和 smtp_port
Docs 设置:
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详细信息[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如果使用 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