tra-loi-cau-hoi-phat-trien-web.com

php.ini & SMTP = - làm thế nào để bạn vượt qua tên người dùng và mật khẩu

My ISP tài khoản yêu cầu tôi gửi tên người dùng và mật khẩu cho bên ngoài SMTP mail.

Làm cách nào để tôi có được PHP để sử dụng điều này khi thực thi php.mail()? Tệp php.ini chỉ chứa các mục nhập cho máy chủ (SMTP= )From: (sendmail_from= ).

64
Charles Faiga

Lệnh PHP mail() không hỗ trợ xác thực. Lựa chọn của bạn:

  1. PHPMailer - Hướng dẫn
  2. - Hướng dẫn
  3. Các chức năng tùy chỉnh - Xem các giải pháp khác nhau trong phần ghi chú: http://php.net/manual/en/ref.mail.php
40
daremon

Tôi áp dụng các chi tiết sau đây trên tập tin php.ini. nó hoạt động tốt.

SMTP = smtp.example.com
smtp_port = 25
username = [email protected]
password = yourmailpassord
sendmail_from = [email protected]

Các chi tiết này giống như trên cài đặt Outlook.

40
sugunan

Sử dụng Fake mailmail cho Windows để gửi thư.

  1. Tạo một thư mục có tên sendmail in C:\wamp\.
  2. Trích xuất 4 tệp này trong thư mục sendmail: sendmail.exe, libeay32.dll, ssleay32.dllsendmail.ini.
  3. Sau đó định cấu hình C:\wamp\sendmail\sendmail.ini:
smtp_server=smtp.gmail.com
smtp_port=465
[email protected]
auth_password=your_password
  1. Ở trên sẽ làm việc với một tài khoản Gmail. Và sau đó cấu hình php.ini:

    sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"

  2. Bây giờ, khởi động lại Apache và về cơ bản đó là tất cả những gì bạn cần làm.

17
Henrik Rosvall

PHP does có xác thực trên lệnh mail!

Phần sau đây hoạt động với tôi trên WAMPSERVER (windows, php 5.2.17)

php.ini

[mail function]
; For Win32 only.
SMTP = mail.yourserver.com
smtp_port = 25
auth_username = smtp-username
auth_password = smtp-password
sendmail_from = [email protected]
12
blavla

Tôi thích công cụ PHPMailer vì nó không yêu cầu PEAR. Nhưng dù sao đi nữa, bạn có một sự hiểu lầm: bạn không muốn cài đặt toàn máy chủ PHP cho người dùng và mật khẩu SMTP. Đây phải là cài đặt trên mỗi ứng dụng (hoặc mỗi trang). Nếu bạn muốn sử dụng cùng một tài khoản trên các trang PHP khác nhau, hãy thêm nó vào một số loại tệp settings.php.

5
Eric_WVGG

Sau khi làm việc cả ngày về điều này, cuối cùng tôi đã tìm ra giải pháp. Đây là cách tôi gửi từ Windows XP bằng WAMP.

  1. Sử dụng máy chủ SMTP của Google. Bạn có thể cần một tài khoản.
  2. Tải xuống và cài đặt Fake Sendmail . Tôi vừa tải xuống, giải nén nó và đặt nó vào thư mục WAMP.
  3. Tạo một tệp thử nghiệm PHP. Xem bên dưới.
<?php
    $message = "test message body";
    $result = mail('[email protected]', 'message subject', $message);
    echo "result: $result";
?>
  1. Cập nhật tệp php.ini và tệp sendmail.ini của bạn (sendmail.ini nằm trong thư mục sendmail).
  2. Kiểm tra tệp error.log trong thư mục sendmail mà bạn vừa tạo nếu nó không hoạt động.

Tài liệu tham khảo:

5
B Seven
  1. Cài đặt Postfix (tương thích Sendmail).
  2. Chỉnh sửa /etc/postfix/main.cf để đọc:
#Relay config
relayhost = smtp.server.net
smtp_use_tls=yes
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_sasl_security_options = noanonymous
  1. Tạo /etc/postfix/sasl_passwd, nhập:
smtp.server.net username:password
  1. Nhập # /usr/sbin/postmap sasl_passwd

  2. Sau đó chạy: service postfix reload

Bây giờ PHP sẽ chạy thư như bình thường với lệnh sendmail -t -i và Postfix sẽ chặn nó và chuyển tiếp nó đến máy chủ SMTP mà bạn cung cấp.

5
Jay Sudo

Sử dụng Mail :: nhà máy trong gói Mail PEAR. Ví dụ.

2
William Keller

Những câu trả lời đã lỗi thời và mất giá. Thực hành tốt nhất..

composer require phpmailer/phpmailer

Tiếp theo trên tệp sendmail.php của bạn chỉ cần yêu cầu như sau

# use namespace
use PHPMailer\PHPMailer\PHPMailer;

# require php mailer
require_once "../vendor/autoload.php";

//PHPMailer Object
$mail = new PHPMailer;

//From email address and name
$mail->From = "[email protected]";
$mail->FromName = "Full Name";

//To address and name
$mail->addAddress("[email protected]", "Recepient Name");
$mail->addAddress("[email protected]"); //Recipient name is optional

//Address to which recipient will reply
$mail->addReplyTo("[email protected]", "Reply");

//CC and BCC
$mail->addCC("[email protected]");
$mail->addBCC("[email protected]");

//Send HTML or Plain Text email
$mail->isHTML(true);

$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$mail->AltBody = "This is the plain text version of the email content";

if(!$mail->send()) 
{
    echo "Mailer Error: " . $mail->ErrorInfo;
} 
else 
{
    echo "Message has been sent successfully";
}

Điều này có thể được cấu hình bao giờ bạn muốn ..

2
Delino
  1. Cài đặt mới nhất hMailServer . "Chạy quản trị viên hMailServer" ở bước cuối cùng.
  2. Kết nối với "localhost".
  3. "Thêm tên miền ..."
  4. Đặt "127.0.0.1." là "Miền", nhấp vào "Lưu".
  5. "Cài đặt"> "Giao thức"> "SMTP"> "Gửi e-mail"
  6. Đặt "localhost" làm "Tên máy chủ cục bộ", cung cấp dữ liệu của bạn trong phần "SMTP Relayer" , nhấp vào "Lưu".
  7. "Cài đặt"> "Nâng cao"> "Phạm vi IP"> "Máy tính của tôi"
  8. Vô hiệu hóa hộp kiểm "Bên ngoài địa chỉ email bên ngoài" trong nhóm "Yêu cầu xác thực SMTP".
  9. Nếu bạn đã sửa đổi php.ini, hãy viết lại 3 giá trị sau:

"SMTP = localhost",

"smtp_port = 25",

"; sendmail_path =".

Tín dụng: Cách định cấu hình WAMP (localhost) để gửi email bằng Gmail?

0
Tamás Bolvári

Xem xét một câu trả lời trong câu hỏi này , Trong PHP 4 gói PEAR Mail thường được cài đặt và hướng dẫn thực sự đơn giản này cho bạn thấy một vài dòng mã bạn cần thêm vào tệp php của mình http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htmlm

0
Alex Jolig