2013-10-18 129 views
2

好吧,嗯,基本上我一直無法編輯我的腳本使用SMTP郵件服務器,而不是使用PHP的郵件繼承人的代碼我一直在使用Linux的 - 使用PHP郵件從SMTP服務器發送

<?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("^[a-z0-9]+([_\\.-][a-z0-9]+)*" . "@" . "([a-z0-9]+([\.-][a-z0-9]+)*)+" . "\\.[a-z]{2,}" . "$", $email)) { 
    $error .= "Invalid email address entered"; 
    $errors = 1; 
} 
if ($errors == 1) 
    echo $error; 
else { 
    $values = array('name', 'email', 'message'); 
    $required = array('name', 'email', 'message'); 

    $your_email = "[email protected]"; 
    $email_subject = "New Message: " . $_POST['subject']; 
    $email_content = "new message:\n"; 

    foreach ($values as $key => $value) { 
     if (in_array($value, $required)) { 
      if ($key != 'subject') { 
       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!'; 
    } 
} ?> 

伊夫已經檢查了,但我的PHP知識是可怕的,所以我有點需要我的手通過這個

+0

挑剔:你還在使用一個smtp服務器......'mail()'本身不做任何傳遞。它只是將電子郵件移交給一個smtp服務器。你使用的任何其他庫都會做同樣的事情,只比超級糟糕的'mail()'更好。另外,'ereg'已被棄用一段時間。你不應該在任何新的代碼中使用它。 –

+2

你的問題比所有這些都有根本的不同嗎? http://stackoverflow.com/search?q=%5Bphp%5D+%5Bmail%5D+smtp。我確定有人在某處設置了php和smtp並將其發佈到SO。 –

+0

可能是這樣,但不是以同樣的方式,我用我的發送郵件,因爲所有的代碼通常是不同的,導致我的PHP知識很爛我不知道如何將其更改爲我的代碼 – user2895412

回答

1

我的PHP知識是不錯的。

我在許多項目中使用PHPMailer。我只能建議你也這麼做。

發送郵件用PHPMailer的是相當直接的,就像這樣: (從PHPMailer的示例頁面所)

<?php 
require 'PHPMailerAutoload.php'; 

$mail = new PHPMailer; 

$mail->isSMTP();          // Set mailer to use SMTP 
$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup server 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Username = 'jswan';       // SMTP username 
$mail->Password = 'secret';       // SMTP password 
$mail->SMTPSecure = 'tls';       // Enable encryption, 'ssl' also accepted 

$mail->From = '[email protected]'; 
$mail->FromName = 'Mailer'; 
$mail->addAddress('[email protected]', 'Josh Adams'); // Add a recipient 
$mail->addAddress('[email protected]');    // Name is optional 
$mail->addReplyTo('[email protected]', 'Information'); 
$mail->addCC('[email protected]'); 
$mail->addBCC('[email protected]'); 

$mail->WordWrap = 50;         // Set word wrap to 50 characters 
$mail->addAttachment('/var/tmp/file.tar.gz');   // Add attachments 
$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name 
$mail->isHTML(true);         // Set email format to HTML 

$mail->Subject = 'Here is the subject'; 
$mail->Body = 'This is the HTML message body <b>in bold!</b>'; 
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

if(!$mail->send()) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
    exit; 
} 

echo 'Message has been sent'; 

可以在源極與你同在......

+0

我已經環顧四周,發現類似於此但我需要它與我的相同格式,因爲它實際上鍊接到這個www.zookenetwork.com/contact就像我說我的PHP知識是非常糟糕的,所以我不知道如何實現我的代碼使用phpmailer – user2895412

+0

什麼困惑您或您在哪裏與您的相比了解PHPMailer代碼有問題? PHPMailer是一個對象,但您只需複製代碼並根據需要進行調整(更改電子郵件,更改服務器,更改錯誤消息,刪除包含附件的行等) – mondjunge

相關問題