2012-08-12 108 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 2012-08-12 10:25:47

+0

循环在哪里? – irrelephant 2012-08-12 10:25:57

+0

这段代码中的错误并不明显。也许它在代码库上的某个地方,在实际使用此代码的部分。 – favoretti 2012-08-12 10:26:00

回答

0

我认为您可能需要将您的解决方案复杂一点以添加跟踪。例如,在您的数据库中添加一个新表格,其中包含发送的每封电子邮件的记录。

表结构可能类似于

EMAIL_ID(PK) email_source(FK表包括电子邮件) USER_ID(FK到用户表)

然后你就可以发送电子邮件给这些用户谁没有收到这个版本的电子邮件。

这可以帮助您卸载SMTP,或以当天发布的散装邮件发送电子邮件。此外,这可以帮助您跟踪打开电子邮件的用户或与电子邮件交互的用户。

希望有所帮助。