2010-08-19 51 views
10

Tôi đang gửi thư từ trang web của mình bằng cách sử dụng chức năng thư php. Nhưng bây giờ nó không phải là làm việc và tôi liên lạc với đội ngũ lưu trữ của chúng tôi sau đó họ nói với tôi để sử dụng smtp như họ đã làm một số thay đổi trong máy chủ. Tôi không biết phải làm thế nào. Mã hiện tại (với chức năng mail php) là như sau, bất cứ ai có thể giúp tôi về những thay đổi wchich tôi phải làm gì với điều này.cấu hình smtp cho thư php

<?php 
$mail_To="[email protected]"; 
$headers = ""; 
$headers .= "From: [email protected]\n"; 
$headers .= "Reply-To: [email protected]\n"; 
$headers .= "MIME-Version: 1.0\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\n"; 
$headers .= "X-Mailer: php"; 
$mail_Subject = " Live TV key"; 
$mail_Body = "<p>Muscle-tube</p>"; 
mail($mail_To, $mail_Subject, $mail_Body,$headers); 

?>

Trả lời

12

mail() chức năng của PHP không có hỗ trợ cho SMTP. Bạn sẽ cần phải sử dụng một cái gì đó giống như PEAR Mail package.

Đây là một mẫu email SMTP kịch bản:

<?php 
require_once("Mail.php"); 

$from = "Your Name <[email protected]>"; 
$to = "Their Name <[email protected]>"; 
$subject = "Subject"; 
$body = "Lorem ipsum dolor sit amet, consectetur adipiscing elit..."; 

$host = "mailserver.blahblah.com"; 
$username = "smtp_username"; 
$password = "smtp_password"; 

$headers = array('From' => $from, 'To' => $to, 'Subject' => $subject); 

$smtp = Mail::factory('smtp', array ('host' => $host, 
            'auth' => true, 
            'username' => $username, 
            'password' => $password)); 

$mail = $smtp->send($to, $headers, $body); 

if (PEAR::isError($mail)) { 
    echo("<p>Error sending mail:<br/>" . $mail->getMessage() . "</p>"); 
} else { 
    echo("<p>Message sent.</p>"); 
} 
?> 
0

Nhưng bây giờ nó không được làm việc và tôi đã liên lạc với nhóm lưu trữ của chúng tôi sau đó họ nói với tôi để sử dụng smtp

Newsflash - đó là sử dụng SMTP trước đó. Họ đã không cung cấp cho bạn thông tin bạn cần để giải quyết vấn đề - hoặc bạn không chuyển tiếp chính xác ở đây.

Có thể họ đã vô hiệu hóa MTA cục bộ trên máy chủ web, trong trường hợp đó, bạn cần kết nối cổng SMTP trên máy từ xa. Có rất nhiều bộ công cụ sẽ thực hiện việc nâng hạng nặng cho bạn. Cá nhân tôi thích phpmailer vì nó thêm chức năng khác. Chắc chắn nếu họ đã lấy đi một cơ sở ở đó trước đó và bạn trả tiền cho một dịch vụ thì nhà cung cấp của bạn sẽ hỗ trợ bạn tốt hơn (có nhiều chương trình để thay thế cho một MTA đầy đủ). sẽ thực hiện công việc này).

C.

0

Lưu ý rằng cài đặt thư PHP đến từ tệp php.ini của bạn. Giao diện mặc định trông giống như sau:

[mail function] 
; For Win32 only. 
; http://php.net/smtp 
SMTP = localhost 
; http://php.net/smtp-port 
smtp_port = 25 

; For Win32 only. 
; http://php.net/sendmail-from 
;sendmail_from = [email protected] 

; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). 
; http://php.net/sendmail-path 
;sendmail_path = 

; Force the addition of the specified parameters to be passed as extra parameters 
; to the sendmail binary. These parameters will always replace the value of 
; the 5th parameter to mail(), even in safe mode. 
;mail.force_extra_parameters = 

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename 
mail.add_x_header = On 

; Log all mail() calls including the full path of the script, line #, to address and headers 
;mail.log = 

Bằng cách chỉnh sửa tệp php.ini, bạn sẽ có thể khắc phục sự cố mà không thay đổi tập lệnh PHP. Ngoài ra, bạn có thể kiểm tra kết nối với công cụ telnet và lệnh HELO, MAIL FROM, RCPT TO, DATA, QUIT nếu bạn kết nối trực tiếp với máy chủ SMTP. Với sendmail, bạn thậm chí không cần điều đó, sendmail nên biết những gì nó đang làm (mặc dù trong trường hợp của bạn có thể là không và các cài đặt sendmail có thể cần một chút trợ giúp.)

+0

Lệnh 'tùy chọn smtp' chỉ dành cho Windows. Đối với * inux, nó dựa vào 'sendmail_path' không hỗ trợ smtp. Vì lý do này, tôi đã downvoted nó. – Hengjie

0

Vì một số câu trả lời đưa ra ở đây liên quan để thiết lập SMTP nói chung (và không chỉ cho @shinod vấn đề cụ thể mà nó đã được làm việc và dừng lại), tôi nghĩ nó sẽ hữu ích nếu tôi cập nhật câu trả lời vì điều này đơn giản hơn rất nhiều so với trước đây: -)

trong PHP 4 gói PEAR mail được thường đã được cài đặt, và hướng dẫn thực sự đơn giản này cho bạn vài dòng mã mà bạn cần phải thêm vào tập tin php của bạn http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm

Hầu hết các công ty lưu trữ liệt kê các cài đặt SMTP mà bạn sẽ cần.Tôi sử dụng JustHost, và họ liệt kê họ tại https://my.justhost.com/cgi/help/26(dưới Outgoing Mail Server)

0

email() chức năng tay php của email qua một tiềm ẩn mail transfer agent mà thường postfix là trên các hệ thống Linux

nên phương pháp ưa thích trên linux là cấu hình postfix của bạn để sử dụng một relayhost, được thực hiện bởi một dòng

relayhost = smtp.example.com

trong /etc/postfix/main.cf

tuy nhiên trong kịch bản của OP tôi bằng cách nào đó nghi ngờ rằng đó là một công việc mà hosting team mình nên làm