2011-08-12 32 views
6

Tôi đã đọc rất nhiều câu hỏi và câu trả lời về vấn đề này trên StackOverflow, nhưng không có câu hỏi nào tôi đã đọc trả lời câu hỏi của tôi một cách cụ thể.Gửi thư đến số lượng lớn người

Tôi không muốn có danh sách gửi thư. Mọi người đánh dấu vào ô nếu họ muốn nhận email hàng loạt. Không có email sai vì tài khoản được kích hoạt bằng email. Vì vậy, không có kiểm tra trả lại. Tuy nhiên, tôi đã sử dụng PHPMailer (vì vậy không có vấn đề với tiêu đề và như vậy) và thêm mọi địa chỉ vào trường 'đến' của email. Điều này có nghĩa là mọi người có thể xem tất cả các email (bằng cách đọc nguồn email hoặc nhấn "trả lời tất cả" trong ứng dụng email của họ), những người dùng khác sẽ không mong muốn điều này. Câu hỏi là:

1) tôi có nên gửi từng email riêng lẻ hoặc đặt tất cả địa chỉ trong trường 'bcc' không? 2) Điều này không làm cho một số người gửi thư đánh dấu email là "spam", cho dù nó có cấu trúc tốt đến mức nào? Nếu vậy, có cách nào để ngăn chặn điều này hơn nữa (ngoài việc thêm địa chỉ vào một số danh sách trắng hoặc thiết lập khóa miền hoặc công việc cron Unix)?

Cảm ơn!

Tất cả những điều được đề cập ở đây yêu cầu người dùng "đăng ký" bằng biểu mẫu và sau đó xác nhận địa chỉ email của họ (như trong PHPList). Tuy nhiên, tôi đã yêu cầu xác nhận khi mọi người đăng ký, do đó, không có ý nghĩa trong việc yêu cầu họ một lần nữa và một lần nữa. Mã hiện tại của tôi kiểm tra cơ sở dữ liệu; nếu bit "nhận-phim-thư" của họ được đặt thành 1 (chúng được thu thập bằng truy vấn sql), một email sẽ được gửi tới chúng khi một bộ phim mới được thêm vào cơ sở dữ liệu. Vì vậy, nếu bạn vẫn tin rằng đây là một danh sách gửi thư (mà tôi nghĩ nó là loại, nhưng có lẽ định nghĩa của tôi bất chấp các tính năng phần mềm hiện có), tôi muốn nó có, 1) một số cách đăng ký người dùng vào danh sách Mã PHP (EG nếu hộp kiểm "Tôi muốn nhận email mỗi khi phim được tải lên cơ sở dữ liệu" được chọn, trong mã xử lý biểu mẫu của tôi, tôi sẽ đăng ký chúng) và 2) cách gửi thư cho mọi người bằng PHP (IE một chức năng như send_mail_to_list ($ nội dung) mà gửi email cho những người tôi đã đăng ký, khi "Add Movie" hình thức được gửi). Có phần mềm quản lý danh sách gửi thư như vậy không?

+1

Xin lỗi, nhưng điều này có vẻ khủng khiếp như danh sách gửi thư cho tôi. – John

+0

Một số bộ lọc spam tăng điểm spam cho email không chứa địa chỉ người nhận trong trường Tới: (trường hợp này khi bạn BCC: chúng). Không có nhiều bạn có thể làm về điều này, khác hơn là không sử dụng BCC. –

+0

có rất nhiều dịch vụ sẽ giúp bạn ở đây ... nhóm google? mailchimp? silverpop? trừ khi bạn là người gửi spam. –

Trả lời

3

Bạn nên lặp trên danh sách các email và gửi email riêng cho mỗi địa chỉ:

$mail = new PHPMailer(); 
$mail->IsSMTP();   // set mailer to use SMTP 
$mail->Host = "mail.{domain_name}.com"; // specify main and backup server 
$mail->SMTPAuth = true;   // turn on SMTP authentication 
$mail->Username = "{username}"; // SMTP username 
$mail->Password = "{password}";  // SMTP password 

$emailFrom = '{email_address}'; 

$mail->From = $emailFrom; 
$mail->IsHTML(true); // set email format to HTML if needed 

$emailSubject = '{your subject}'; 
$emailBody = "Whatever content you are sending."; 

$mail->Subject = $emailSubject; 
$mail->Body = $emailBody; 

foreach($emails => $email) { 

    $emailTo = $email['email']; 
    $emailToName = $email['name']; 

// send an email to customer 
    $mail->AddAddress($emailTo, $emailToName); 

    if(!$mail->Send()) 
    { 
     echo 'failed'; 
    } 

    $mail->ClearAddresses(); 
} 
1

1) tôi có nên gửi từng email riêng lẻ hoặc đặt tất cả địa chỉ trong trường 'bcc' không?

Chắc chắn là riêng lẻ. Bcc sẽ có email của bạn được xem là spam.

2) Điều này không làm cho một số người gửi thư đánh dấu email là "spam", không có vấn đề về cấu trúc của nó? Nếu vậy, có cách nào để tiếp tục ngăn chặn điều này (ngoài việc thêm địa chỉ vào một số danh sách cho phép hoặc thiết lập khóa miền hoặc công việc cron Unix)?

bằng bản ghi SPF có thể hữu ích. Hãy chắc chắn rằng các dns ngược đến máy chủ của bạn không phải là danh sách đen, đặc biệt nếu nó là một lưu trữ được chia sẻ.

0

Tôi chưa làm điều này trong php vì tôi biết rằng theo mặc định không có luồng siêu trong php.

Trong các ngôn ngữ/khuôn khổ khác như Ruby hoặc .NET, bạn sẽ gửi từng email riêng lẻ bằng cách siêu/đa luồng chúng. Điều này tương tự như cách tiếp cận công việc * nix cron mà bạn biết ngoại trừ việc nó được thực thi tại thời gian chạy - bạn tạo một chuỗi cho mỗi 5 địa chỉ bạn gửi và sau đó tất cả các luồng gửi 5 thư sau cái kia.

Hãy nhớ rằng ngay cả với phương pháp này, việc thay đổi cổ chai từ ứng dụng sang máy chủ thư bạn đang sử dụng.Vì vậy, cho phép nói rằng bạn đang sử dụng postgre sẵn có mà tàu với apache - nó sẽ không xử lý khối lượng lớn kể từ khi mỗi chủ đề sẽ thêm tải vào nó.

Và tất nhiên bạn nên tránh tất cả điều này cùng nhau nếu bạn có thể sử dụng MailChimp !!

0

Gửi mỗi người dùng một email riêng biệt, chỉ được gửi cho họ.

Thiết lập DKIMSPF hoặc ít nhất tạo bản ghi SPF thích hợp. DKIM yêu cầu một số cấu hình của máy chủ thư thực sự gửi thư cho bạn, nhưng có thể giúp ích rất nhiều với khả năng phân phối, đặc biệt cho các nhà cung cấp dịch vụ email lớn.

0

Mẹo của tôi bên cạnh những người khác sẽ là: duy trì hàng đợi email nơi bạn có thể giới hạn tốc độ phân phối. Một số nhà cung cấp dịch vụ email không thích khi bạn cố gắng phân phối hàng nghìn email đến miền của họ cùng một lúc.

Điều này có thể thực hiện được với một số MTA .. Nhưng tôi chưa thấy cái nào đủ linh hoạt để thực hiện việc này. Những gì tôi sử dụng cho điều này là lớp học Mail_Queue + cron job.

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