设置php mail()函数的SMTP详细信息

时间:2011-05-23 07:10:29

标签: php email smtp

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

我的脚本在我的虚拟主机上工作正常但是当它移动到其他专用服务器时,邮件永远不会被传递。现在我需要设置SMTP服务器,但不要正确。

使用Gmail应用程序btw。这就是代码的样子。

<?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设置呢?

3 个答案:

答案 0 :(得分:5)

仅限Windows: 您可以尝试将ini_set() functionDocs用于SMTPDocssmtp_portDocs设置:

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

答案 1 :(得分:1)

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

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

如果要在应用程序中使用多个不同的SMTP服务器,我建议使用“更大”的邮件框架,例如: Swiftmailer

答案 2 :(得分:0)

从您的专用服务器尝试通过端口465 telnet到smtp.gmail.com。它可能会被您的互联网提供商阻止