php
  • events
  • email
  • 2011-10-10 46 views 7 likes 
    7

    我在下面使用這個腳本,它工作。唯一的事情是它發送一封電子郵件給它獲得的第一個電子郵件ID。其餘的正在進行中。那麼,我如何發送電子郵件到所有的電子郵件。當我測試只是拉電子郵件的腳本,它的工作原理,它顯示所有的電子郵件。如何在用戶採取特定操作時向用戶朋友發送電子郵件?

    代碼:

    $sql = "SELECT STRAIGHT_JOIN DISTINCT email from 
        friend_email_ids WHERE my_id='$id'"; 
        $result = mysql_query($sql); 
    
        $query = mysql_query($sql) or die ("Error: ".mysql_error()); 
    
        if ($result == "") 
        { 
        echo ""; 
        } 
        echo ""; 
    
    
        $rows = mysql_num_rows($result); 
    
        if($rows == 0) 
        { 
        print(""); 
    
        } 
        elseif($rows > 0) 
        { 
        while($row = mysql_fetch_array($query)) 
        { 
    
        $email = $row['email']; 
    
    
        print(""); 
        } 
    
        } 
    
    $headers = "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
    $headers .= "From: $usermail\r\n"; 
    $subject = "$full_name added"; 
    $message = "<html><body>"; 
    $message .= "Hello, <br><br>$full_name posted someth<br><br>"; 
    $message .= "<a href=www.domain.com/signup.php?t=&sign=>Click here.</a><br><br>"; 
    $message .= "</body></html>"; 
    mail("$email", "Subject: $subject", 
    $message, "$headers"); 
    echo ""; 
    
    +0

    好友,你想寫一個垃圾郵件腳本? B) – Oerd

    +0

    @Oerd,根據問題標題,這只是迴應收件人的朋友所要求的行動。 –

    +0

    你已經體貼了一個游泳池郵件系統,以解決服務器問題。 – Exos

    回答

    2

    你是你$email變量每次通過循環覆蓋。相反,您需要創建一個數組,並且每次通過循環將電子郵件添加到數組中。完成後,請在發送郵件之前用逗號加入數組中的電子郵件地址。

    所以,你的循環之前(在$rows = ...後聲明可能),初始化一個新的數組,像這樣:

    $rows = mysql_num_rows($result); 
    $emails = array(); /* Add this line */ 
    

    再通過每一次循環中,添加電子郵件到數組:

    while($row = mysql_fetch_array($query)) { 
        array_push($emails, $row['email']); 
        /* ... */ 
    } 
    

    最後,他們一起與您的電子郵件發送逗號:

    mail(implode(',', $emails), "Subject: $subject", $message, $headers); 
    

    Alternat結構延續,您可以發送一個單獨的電子郵件給每個用戶是這樣的:

    foreach ($emails as $email) { 
        mail($email, "Subject: $subject", $message, $headers); 
    } 
    
    +0

    確定它仍然無法正常工作。我也沒有得到一個錯誤,所以不知道要檢查什麼。 – AAA

    +1

    這應該工作。你遇到了什麼錯誤? –

    +0

    我沒有收到任何錯誤。我檢查了所有的電子郵件,我沒有收到任何東西。我仔細檢查了腳本,它符合您的指示。 – AAA

    0

    試試這個:

    <?php 
    
    $headers = "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
    $headers .= "From: $usermail\r\n"; 
    $subject = "$full_name added"; 
    $message = "<html><body>"; 
    $message .= "Hello, <br><br>$full_name posted someth<br><br>"; 
    $message .= "<a href='www.domain.com/signup.php?t=&sign='>Click here.</a><br><br>"; 
    $message .= "</body></html>"; 
    
    $sql = "SELECT DISTINCT email from friend_email_ids WHERE my_id='$id'"; 
    $result = mysql_query($sql) or die ("Error: ".mysql_error()); 
    
    while($row = mysql_fetch_array($result)) 
    { 
        mail($row['email'], $subject, $message, $headers); 
        // for debugging purposes, uncomment the following line 
        // echo $row['email'] 
    } 
    

    變化:

    • 清理PHP代碼(刪除未使用的指令,刪除第二在"等中刪除了字符串變量)
    • 修正了電子郵件消息中的HTML鏈接(它沒有引號Ëhref屬性)
    • 遍歷結果發送電子郵件每個$row
    +0

    謝謝。但它不起作用。它的工作原理與舊腳本一樣,只有當它發送給一個人時才發送,如果多於一個人,那麼它根本不發送。 – AAA

    0

    我在這裏附上代碼發送多個郵件,並與您現有的代碼集成起來。

    您只需將此代碼複製粘貼到您的頁面中,然後將其上傳到某個服務器以測試其可用性。我已經在我的服務器上進行了測試,並提供了多封郵件。

    $ email = array();

    $sql = "SELECT STRAIGHT_JOIN DISTINCT email from friend_email_ids WHERE my_id = '".$id."' "; 
    $result = mysql_query($sql); 
    
    $query = mysql_query($sql) or die ("Error: ".mysql_error()); 
    
    while($row = mysql_fetch_assoc($query)) 
    { 
        $email[] = $row['email']; 
    } 
    
    
    /* 
    echo "<pre>"; 
    print_r($email); 
    exit; 
    */ 
    $headers = "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
    $headers .= "From: $usermail\r\n"; 
    
    $subject = "$full_name added"; 
    $message = "<html><body>"; 
    $message .= "Hello, <br><br>$full_name posted this mail<br><br>"; 
    $message .= "<a href='www.aadinathtech.com/index.php'>Click here.</a><br><br>"; 
    $message .= "</body></html>"; 
    
    foreach($email as $key=>$val) { 
        mail($val, "Subject: $subject", $message, "$headers"); 
        echo "<br />Mail has been sent to $val<br /><br />"; 
    } 
    

    如果您仍然發現任何問題,請回復我。

    +0

    謝謝。但它不起作用。它的工作原理與舊腳本一樣,只有當它發送給一個人時才發送,如果多於一個人,那麼它根本不發送。 – AAA

    0

    您需要通過移動循環內的最後一塊代碼來做一些小修改。 試試這個:

    $rows = mysql_num_rows($result); 
    
        if($rows == 0) 
        { 
        print(""); 
    
        } 
        elseif($rows > 0) 
        { 
        while($row = mysql_fetch_array($query)) 
        { 
    
        $email = $row['email']; 
        $headers = "MIME-Version: 1.0\r\n"; 
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
        $headers .= "From: $usermail\r\n"; 
        $subject = "$full_name added"; 
        $message = "<html><body>"; 
        $message .= "Hello, <br><br>$full_name posted someth<br><br>"; 
        $message .= "<a href=www.domain.com/signup.php?t=&sign=>Click here.</a><br><br>"; 
        $message .= "</body></html>"; 
        mail("$email", "Subject: $subject", 
        $message, "$headers"); 
    
        print(""); 
        } 
    
        } 
    
    
    echo ""; 
    
    相關問題