2012-08-12 2 views
0

저는 수년 동안 저의 사이트에서 이메일을 보내기 위해 아래 코드를 사용 했었습니다.하지만 문제는 그것이 때때로 여러 번 메일을 보내는 것입니다.이메일 루핑을 반복하십시오.

예 : 사용자에게 메시지를 보내면 5 명이 걸릴 수 있습니다. 한 사람에게만 보낼 때도 3 번받을 수 있습니다.

require_once "Mail.php"; 

$from = "xxx Support <[email protected]>"; 
$to = "$name <$email>"; 
$subject = "xxxxx"; 
$body = "xxx"; 

$host = "mail.xxx.com"; 
$username = "noreply+xxx.com"; 
$password = "xzcsd=sfd?hdssc"; 

$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>" . $mail->getMessage() . "</p>"); 
     }` 
+0

이 코드는 정상적으로 보입니다. 문제는 메일을 반복하는 방식이나 데이터베이스에서 전자 메일을받는 방법에있을 수 있습니다. _unique_ 전자 메일 주소를 받으셨습니까? – Grampa

+0

루프는 어디에 있습니까? – irrelephant

+0

이 코드에서는 오류가 명확하지 않습니다. 어쩌면이 코드를 실제로 사용하는 부분에서 코드 어딘가의 어딘가에있을 수도 있습니다. – favoretti

답변

0

추적을 추가하기 위해 솔루션이 약간 복잡 할 수 있습니다. 예를 들어, 보내진 각 전자 메일에 대한 레코드가있는 새 테이블을 DB에 추가하십시오.

테이블 구조는

EMAIL_ID (PK) (표를 포함하여 이메일에 FK) email_source (사용자 테이블에 FK) USER_ID 같은 것이

그런 다음 당신이 그 사용자에게 이메일을 보낼 수있을 수있는 이 이메일 버전을받지 못했습니다.

이렇게하면 SMTP를 오프로드하거나 대량 메일로 하루 동안 메일을 보낼 수 있습니다. 또한 이메일을 열거 나 이메일과 상호 작용 한 사용자를 추적하는 데 도움이 될 수 있습니다.

희망이 있습니다.