2009-08-12 24 views
8

Tôi mới sử dụng PHP, nhưng có một nắm bắt tốt về mọi thứ (chưa học được các lớp).PHPMailer v. Mail() cho một Biểu mẫu Liên hệ đơn giản

Câu hỏi đặt ra:

nào để lựa chọn? PHPMailer hoặc thư() cho biểu mẫu liên hệ mới của tôi.

Hình thức rất đơn giản:

Your name: 
Your email: 
Subject: 
Body: 

Tôi có khoảng 2.000 khách truy cập mỗi ngày và nhận được khoảng 10 đệ trình mỗi ngày, vì vậy tôi không cần bất cứ điều gì quá lạ mắt. =)

câu hỏi lặt vặt trong đầu tôi:

  • là PHPMailer sẽ bảo vệ tốt hơn Form liên hệ của tôi từ CC: tiêm (mối quan tâm lớn)? Tôi đã biết thủ thuật anti-spambot display:none CSS.
  • PHPMailer có giúp tôi lưu bước thực hiện chức năng email_validator() không?
  • PHPMailer có thể tiết kiệm cho tôi bất kỳ lúc nào khác để viết bất kỳ chức năng tùy chỉnh nào không?

Cảm ơn! Với bất kỳ may mắn nào, tôi sẽ trả lời các câu hỏi sớm. Lol

Trả lời

11

Đây là tất cả những gì tôi có thể nghĩ đến trong một lần ngồi, tha thứ cho tôi nếu có bất kỳ thiếu sót rõ ràng nào.

Ưu điểm để sử dụng PHP tích hợp trong chức năng mail, không có bên ngoài thư viện/wrapper:

  • Bạn không cần bất cứ điều gì ngoài PHP.
  • Bạn không cần phải tìm hiểu API mới.
  • Bạn không phải lo lắng về việc nâng cấp PHP hoặc vi phạm tập lệnh đó.
  • Bạn không phải lo lắng về phiên bản cập nhật không hoạt động trên cài đặt PHP của bạn.
  • Bạn không phải lo lắng về các lỗ hổng bảo mật tiềm năng có thể là do sử dụng tập lệnh đó.
  • Nếu đó là một nhiệm vụ đơn giản, bạn sẽ được thực hiện sau một vài phút.

Ưu điểm khi sử dụng một thư viện bên ngoài/wrapper:

  • Nếu bạn cần phải giới thiệu nhiều phức tạp vào gửi email của bạn, bạn thể làm như vậy khá dễ dàng. Thêm tệp đính kèm, hình ảnh nội dòng và không vui lắm khi sử dụng chức năng thư đồng bằng PHP .Thư viện bên ngoài (tại số ít nhất là các thư viện tốt) có thêm API OOPish. Việc thêm tệp đính kèm có thể dễ dàng như $message->addAttachment($file); mà không cần phải phát xung quanh với tiêu đề, v.v.
  • Các thư viện bên ngoài giúp che giấu các phức tạp xấu xí như thêm các tệp đính kèm, ký tự và hình ảnh nội dòng.
  • Sử dụng một thư viện bây giờ sẽ giúp bạn tiết kiệm các rắc rối của việc phải tìm hiểu nó trong tương lai khi bạn làm cần thêm phức tạp/chức năng.
  • thư viện bên ngoài lẽ (Tôi thực sự không chắc chắn mà những người thân, và để mức độ nào) giải quyết một số lỗ hổng rằng thư của PHP không không.

Nếu tôi có thể nghĩ ra bất kỳ điều gì khác, tôi chắc chắn sẽ thêm nó.

+0

Công cụ hay. Vì tôi không cần khả năng HTML, tệp đính kèm, v.v. Tôi đang hướng tới thư(). – Jeff

+0

@ Jeff - Tôi sử dụng Zend_Mail cho tất cả nội dung email của mình. Điều đó nói rằng, tôi có thể sẽ sử dụng mail() nếu nó được cho một cái gì đó giống như những gì bạn mô tả trong câu hỏi của bạn. Bạn không nên quyết định dựa trên bất kỳ câu trả lời duy nhất nào ở đây, mà đúng hơn là phân tích chi tiết về tình huống cụ thể của bạn, mà chỉ bạn mới có thể làm được. – karim79

0

PHPMailer là lựa chọn của tôi bởi vì nó cho phép tôi gửi e-mail SMTP đến google mà không cần cài đặt bất kỳ thư viện nào hoặc định cấu hình máy chủ thư, như vậy tôi không phải lo lắng về các vấn đề liên quan đến spam.

+0

Xin chào, tôi nên đề cập rằng máy chủ thư của tôi đang chạy trơn tru, không cần Gmail hoặc bất kỳ thứ gì lạ mắt như thế. – Jeff

1

này sẽ có lẽ không thực sự trả lời tất cả câu hỏi của bạn, nhưng nó sẽ không làm tổn thương một trong hai, tôi đoán ...

Dù bạn muốn làm, tôi sẽ không đi với mail(): gửi mail không phải là một nhiệm vụ dễ dàng như vậy và việc sử dụng thư viện/khung công tác hiện tại sẽ luôn là một ý tưởng hay: nó sẽ giải quyết được nhiều vấn đề mà bạn có thể thậm chí không nghĩ đến - ngay cả khi bạn không cần gửi nhiều thư.


Về câu hỏi cụ thể của bạn, có thể câu trả lời khác sẽ nói điều gì khác và/hoặc nhận thêm thông tin của bạn, nhưng bất kỳ thư viện "tốt" nào được tạo ra để gửi thư phải giải quyết những vấn đề đó ... Khác, bạn nên lẽ tìm kiếm một thư viện ^^

Tuy nhiên, thử nghiệm một vài câm không địa chỉ sẽ cho phép bạn chắc chắn 100% ;-)


một giải pháp khác là khá chắc chắn là để kiểm tra nguồn gốc của thư viện ;-)

Trong nguồn của phiên bản 2.2.1, bạn sẽ tìm thấy những thứ như thế này:

class.phpmailer.php, chức năng AddAnAddress, đường 413, bạn sẽ thấy điều này:

if (!self::ValidateAddress($address)) { 
    $this->SetError($this->Lang('invalid_address').': '. $address); 
    if ($this->exceptions) { 
    throw new phpmailerException($this->Lang('invalid_address').': '.$address); 
    } 
    echo $this->Lang('invalid_address').': '.$address; 
    return false; 
} 

Và có vẻ như chức năng này được sử dụng bởi các chức năng khác thêm địa chỉ ...Vì vậy, tôi cho rằng có một số loại xác nhận email-addresses ;-)
Đó sẽ trả lời ít nhất một trong những câu hỏi của bạn ^^


PHPMailer không phải là giải pháp duy nhất tồn tại, btw; có rất nhiều người khác, như thế nào, ví dụ:

1

Như Pascal MARTIN đề cập, gửi email không phải là thẳng về phía trước và dễ dàng như một số người chỉ giả định nó là. Để trả lời câu hỏi của bạn trực tiếp. Có PHPMailer thực hiện một số xác thực, nhưng nó không phải là siêu nâng cao, nhưng phải đủ cho việc sử dụng của bạn. Và PHPMailer sẽ giúp bạn tiết kiệm thời gian tùy thuộc vào chức năng tùy chỉnh mà bạn sẽ cần. Một số điều cần xem xét:

  • HTML so với văn bản thuần túy. Nếu các email chỉ bao giờ đi với bạn, điều này có lẽ không phải là lớn của một thỏa thuận. Nhưng nếu bạn đã từng gửi email cho người dùng của mình (nói email xác nhận), bạn muốn có thể hỗ trợ cả HTML và ứng dụng văn bản thuần túy. PHPMailer (và Zend_Mail) làm cho việc này rất dễ thực hiện.
  • SMTP. Đây là một điều khác thực sự quan trọng nếu bạn gửi email cho người dùng của mình, nhưng không quá nhiều nếu đó chỉ là một email cho chính bạn. Sử dụng chức năng mail() thường xuyên của php, email sẽ được gửi qua sendmail, hầu như tất cả các cài đặt * nix đều có sẵn (đặc biệt là các máy chủ). Kết quả là, các bộ lọc spam không thân thiện với nó. Nếu bạn có thiết lập máy chủ SMTP thông thường với bản ghi MX tin cậy (hoặc nếu bạn có tài khoản gmail), bạn có thể gửi thông qua SMTP bằng cách sử dụng, điều này sẽ giúp giảm khả năng thư của bạn bị gắn cờ là spam.

Ngoài PHPMailer Zend_Mail là một cách tốt để kiểm tra (đó là một phần của Zend Framework). Tuy nhiên, có thể hơi nhiều đối với một biểu mẫu liên hệ đơn giản.

Các vấn đề liên quan