2011-08-12 5 views
6

이 질문에 대한 많은 질문과 답변을 StackOverflow에서 읽었지 만, 읽은 사람 중 누구도 내 질문에 특별히 대답하지 않았습니다.많은 사람들에게 메일 보내기

나는 메일 링리스트를 갖고 싶지 않습니다. 대량 이메일을 수신하려면 사람들이 상자를 틱합니다. 계정은 전자 메일을 통해 활성화되기 때문에 잘못된 전자 메일이 없습니다. 따라서 바운스 검사가 필요 없습니다. 그러나, 나는 이미 PHPMailer를 사용하므로 (헤더 등의 문제는 없다) 모든 주소를 이메일의 '받는 사람'필드에 추가한다. 즉, 모든 사람이 모든 이메일을 볼 수 있습니다 (전자 메일 원본을 읽거나 전자 메일 클라이언트에서 "모두에게 응답"). 다른 사용자에게는 바람직하지 않습니다. 질문은 :

1) 각 이메일을 개별적으로 보내거나 '숨은 참조'입력란에 모든 주소를 입력해야합니까? 2) 일부 메일 서버가 전자 메일을 "스팸"으로 표시하지 않습니까? 그렇다면이 문제를 더욱 방지 할 수있는 방법이 있습니까 (일부 화이트리스트에 주소를 추가하거나 도메인 키 또는 Unix cron 작업을 설정하는 것 제외)?

감사합니다.

여기에 언급 된 모든 것들은 사용자가 양식을 사용하여 "구독"하고 PHPList와 같은 이메일 주소를 확인해야합니다. 그러나, 나는 이미 사람들이 등록 할 때 확인을 요구하기 때문에, 그들에게 몇 번이고 물어 보는 것은 의미가 없다. 기존 코드가 데이터베이스를 검사합니다. "receive-movie-mail"비트가 1로 설정된 경우 (SQL 쿼리를 사용하여 수집 됨) 새 영화가 데이터베이스에 추가되면 전자 메일이 전송됩니다. 만약 당신이 여전히 이것을 메일 링리스트로 생각한다면 (나는 그것이 다소 다르다고 생각하지만, 아마도 나의 정의가 기존의 소프트웨어 기능을 무시한다고 생각한다.) 나는 그것을 가지고 싶다. 1) 사용자를 목록에 등록시키는 방법 PHP 코드 ("영화가 데이터베이스에 업로드 될 때마다 이메일을 수신하고 싶습니다."확인란을 선택하고, 양식 처리 코드에서 가입 할 것입니다.) 2) PHP로 사람들을 우편으로 보내는 방법 IE는 "Add Movie"양식이 제출되었을 때 가입 한 사람들에게 전자 메일을 보내는 send_mail_to_list ($ content)와 같은 기능입니다. 그런 메일 링리스트 관리 소프트웨어가 있습니까?

+1

죄송합니다.하지만이 메일 링리스트는 저에게 메일 링리스트와 흡사합니다. – John

+0

일부 스팸 필터는받는 사람의 주소가 포함되지 않은 이메일의 스팸 점수를받는 사람 : 입력란에 표시합니다 (숨은 참조 : 사용자 인 경우). BCC를 사용하지 않는 것 외에는 할 수있는 일이 많지 않습니다. –

+0

여기에 도움이 될 서비스가 많이 있습니다 ... Google 그룹스? mailchimp? silverpop? 네가 스패머가 아니라면. –

답변

3

당신은 이메일의 목록을 통해 루프 및 각 주소에 대해 개별 이메일을 보내해야합니다

$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) 각 이메일을 개별적으로 보내거나 모든 주소를 '실감 나는 (bcc)'입력란에 기재해야합니까?

확실히 개별적으로. 숨은 참조는 귀하의 이메일을 스팸으로 간주합니다.

2)이 일부 mailservers는 "스팸 메일"로 이메일을 표시 그것이 잘 구조화 된 방법을 더 문제가되지 것인가? 그렇다면 추가로 을 차단하는 방법이 있습니까 (주소를 일부 화이트리스트에 추가하거나 도메인 키 또는 Unix cron 작업 설정).

SPF 레코드를 사용하면 도움이 될 수 있습니다. 서버에 대한 역방향 DNS가 블랙리스트에 없는지 확인하십시오 (특히 공유 호스팅 인 경우).

0

기본적으로 PHP에는 하이퍼 스레딩이 없다는 것을 알기 때문에 나는 이것을 PHP에서하지 않았습니다.

루비 또는 .NET과 같은 다른 언어/프레임 워크에서는 하이퍼/멀티 스레딩을 통해 개별 이메일을 함께 보냅니다. 이것은 실행시에 실행된다는 점을 제외하고는 * nix cron jobs 접근법과 비슷합니다. 보내는 5 개의 주소마다 하나의 스레드를 작성한 다음 모든 스레드가 차례로 5 개의 메일을 발송합니다.

이 방법을 사용해도 병목 현상이 응용 프로그램에서 사용중인 메일 서버로 이동한다는 점에 유의하십시오.따라서 아파치와 함께 제공되는 inbuilt postgre를 사용한다고 가정 해 봅니다. 각 스레드가 부하를 추가하기 때문에 대량의 볼륨을 처리하지 못합니다.

물론 MailChimp를 사용할 수 있다면이 모든 것을 함께 피하십시오!

0

각 사용자에게 별도의 이메일을 보내기 만 그들에게 해결.

DKIMSPF을 설정하거나 적어도 적절한 SPF 레코드를 만드십시오. DKIM은 실제로 메일을 보내는 메일 서버의 구성을 필요로하지만, 특히 대형 이메일 제공 업체의 경우 배달 가능성에 크게 도움이됩니다.

0

내 옆에 내 팁 : 배달 속도를 제한 할 수있는 이메일 대기열을 유지합니다. 한 번에 수천 개의 이메일을 도메인에 전달하려고 시도하는 일부 이메일 제공 업체는 마음에 들지 않습니다.

일부 MTA에서 가능해야합니다. 그러나이 작업을 수행 할 수있을 정도로 유연하지는 않습니다. 내가 사용한 것은 배 클래스 Mail_Queue + cron 작업입니다.