2011-05-23 80 views
8

我一直在尋找答案,並嘗試了很多事情來解決這個問題。設置SMTP郵件()函數的SMTP詳細信息

我的腳本在我的虛擬主機上運行良好,但是當將其移動到其他專用服務器時,郵件從未獲得交付。現在,我需要設置SMTP服務器,但不正確。

使用Gmail應用程序btw。這是代碼的樣子。

<?php 

if(!$_POST) exit; 

$email = $_POST['email']; 


//$error[] = preg_match('/\b[A-Z0-9._%-][email protected][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 = "[email protected]"; 
    $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 = "[email protected]"; // SMTP username 
$mail->Password = "password"; // SMTP password 

?> 

那麼我該如何設置SMTP設置?

+2

檢查出這是一個完美的工作靈魂http://stackoverflow.com/questions/712392/send-email-using-gmail-smtp-server-from-php-page – 2011-05-23 07:23:25

+0

)複製posible – Harsh 2011-05-23 07:51:35

回答

1

看看你的php.ini,你可以在那裏設置這些值。

下面是PHP手冊的說明: http://php.net/manual/en/mail.configuration.php

如果你想在你的應用程序中使用幾種不同的SMTP服務器,我建議使用「更大」的郵件架構,體育Swiftmailer

+0

我有正確的設置那裏。但仍然有工作。它的一個簡單的形式,所以我認爲PHP郵件功能是這次最好的方式。 – inpbox 2011-05-23 12:41:28

+0

有一些細節涉及SMTP握手(有/沒有身份驗證等),PHP郵件不知道他們全部。對於簡單的任務來說,內置的php郵件是解決手頭問題的好方法,但請記住它有其侷限性。 – Bjoern 2011-05-23 12:50:56

+0

好吧,但是在我最後一行的代碼中,我已經設置了google提供的設置。但由於即時通訊使用外部smtp服務器發送郵件到給定的電子郵件地址我需要改變一些在php.ini也許? – inpbox 2011-05-23 13:04:25

6

下僅適用於Windows:您可以嘗試使用ini_set() functionDocsSMTPDocssmtp_portDocs設置:從專用服務器

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

如何設置用戶名,密碼和加密類型, – 2017-01-08 06:39:42

+0

完美。它的工作很好..感謝您的帖子。 – Poorna 2017-02-08 17:20:23

0

嘗試遠程連接到smtp.gmail.com端口465。它可能會阻止您的互聯網服務提供商