Php 如何与班级一起为网站的所有成员发送电子邮件?

Php 如何与班级一起为网站的所有成员发送电子邮件?,php,mysql,Php,Mysql,我需要创建一个PHP类,该类将向网站的所有成员发送电子邮件。简单的mysql_fetch_数组和循环不适合,因为我的客户需要一个类,而我实际上不太了解类以及他到底想要什么。你能解释一下或者给我一些提示吗?如果Can use是一个处理所有邮件发送的类 或使用phpclasess站点中的类(必需注册) 类别代码: <? /* sendMail Class - by André Cupini - andre@neobiz.com.br */ class sendMail { v

我需要创建一个PHP类,该类将向网站的所有成员发送电子邮件。简单的mysql_fetch_数组和循环不适合,因为我的客户需要一个类,而我实际上不太了解类以及他到底想要什么。你能解释一下或者给我一些提示吗?

如果Can use是一个处理所有邮件发送的类

或使用phpclasess站点中的类(必需注册)

类别代码:

<? 
/* sendMail Class - by André Cupini - andre@neobiz.com.br */ 
class sendMail 
{ 
    var $to; 
    var $cc; 
    var $bcc; 
    var $subject; 
    var $from; 
    var $headers; 
    var $html; 

    function sendMail()  
    { 
        $this->to       = NULL; 
        $this->cc       = NULL; 
        $this->bcc      = NULL; 
        $this->subject  = NULL; 
        $this->from     = NULL; 
        $this->headers  = NULL;   
        $this->html     = FALSE; 
    } 

    function getParams($params)  
    { 
        $i = 0; 
        foreach ($params as $key => $value) { 
            switch($key) { 
                case 'to': 
                    $this->to       = $value; 
                break; 
                case 'cc': 
                    $this->cc       = $value; 
                break; 
                case 'bcc': 
                    $this->bcc       = $value; 
                break; 
                case 'subject': 
                    $this->subject  = $value; 
                break; 
                case 'from': 
                    $this->from     = $value; 
                break; 
                case 'submitted': 
                    NULL; 
                break; 
                default: 
                    $this->body[$i]["key"]     = str_replace("_", " ", ucWords(strToLower($key))); 
                    $this->body[$i++]["value"] = $value; 
            } 
        } 
    } 

    function setHeaders()  
    { 
        $this->headers = "From: $this->from\r\n"; 
        if($this->html === TRUE) { 
            $this->headers.= "MIME-Version: 1.0\r\n"; 
            $this->headers.= "Content-type: text/html; charset=iso-8859-1\r\n"; 
        } 
        if(!empty($this->cc))  $this->headers.= "Cc: $this->cc\r\n"; 
        if(!empty($this->bcc)) $this->headers.= "Bcc: $this->bcc\r\n"; 
    } 

    function parseBody()  
    { 
        $count = count($this->body); 
        for($i = 0; $i < $count; $i++) { 
            if($this->html) $content.= "<b>"; 
            $content .= $this->body[$i]["key"].': '; 
            if($this->html) $content.= "</b>"; 
            if($this->html) $content .= nl2br($this->body[$i]["value"])."\n"; 
            else $content .= $this->body[$i]["value"]; 
            if($this->html) $content.= "<hr noshade size=1>\n"; 
            else $content.= "\n".str_repeat("-", 80)."\n"; 
        } 
        if($this->html) { 
            $content = " 
            <style> 
                BODY { 
                  font-family: verdana; 
                  font-size: 10; 
                } 
            </style> 
            ".$content; 
        } 
        $this->body = $content; 
    } 

    function send()  
    { 
        if(mail($this->to, $this->subject, $this->body, $this->headers)) return TRUE; 
        else return FALSE; 
    } 

    function set($key, $value)  
    { 
        if($value) $this->$key = $value; 
        else unset($this->$key); 
    } 
} 
?>

如果can use是一个处理所有邮件发送的类

或使用phpclasess站点中的类(必需注册)

类别代码:

<? 
/* sendMail Class - by André Cupini - andre@neobiz.com.br */ 
class sendMail 
{ 
    var $to; 
    var $cc; 
    var $bcc; 
    var $subject; 
    var $from; 
    var $headers; 
    var $html; 

    function sendMail()  
    { 
        $this->to       = NULL; 
        $this->cc       = NULL; 
        $this->bcc      = NULL; 
        $this->subject  = NULL; 
        $this->from     = NULL; 
        $this->headers  = NULL;   
        $this->html     = FALSE; 
    } 

    function getParams($params)  
    { 
        $i = 0; 
        foreach ($params as $key => $value) { 
            switch($key) { 
                case 'to': 
                    $this->to       = $value; 
                break; 
                case 'cc': 
                    $this->cc       = $value; 
                break; 
                case 'bcc': 
                    $this->bcc       = $value; 
                break; 
                case 'subject': 
                    $this->subject  = $value; 
                break; 
                case 'from': 
                    $this->from     = $value; 
                break; 
                case 'submitted': 
                    NULL; 
                break; 
                default: 
                    $this->body[$i]["key"]     = str_replace("_", " ", ucWords(strToLower($key))); 
                    $this->body[$i++]["value"] = $value; 
            } 
        } 
    } 

    function setHeaders()  
    { 
        $this->headers = "From: $this->from\r\n"; 
        if($this->html === TRUE) { 
            $this->headers.= "MIME-Version: 1.0\r\n"; 
            $this->headers.= "Content-type: text/html; charset=iso-8859-1\r\n"; 
        } 
        if(!empty($this->cc))  $this->headers.= "Cc: $this->cc\r\n"; 
        if(!empty($this->bcc)) $this->headers.= "Bcc: $this->bcc\r\n"; 
    } 

    function parseBody()  
    { 
        $count = count($this->body); 
        for($i = 0; $i < $count; $i++) { 
            if($this->html) $content.= "<b>"; 
            $content .= $this->body[$i]["key"].': '; 
            if($this->html) $content.= "</b>"; 
            if($this->html) $content .= nl2br($this->body[$i]["value"])."\n"; 
            else $content .= $this->body[$i]["value"]; 
            if($this->html) $content.= "<hr noshade size=1>\n"; 
            else $content.= "\n".str_repeat("-", 80)."\n"; 
        } 
        if($this->html) { 
            $content = " 
            <style> 
                BODY { 
                  font-family: verdana; 
                  font-size: 10; 
                } 
            </style> 
            ".$content; 
        } 
        $this->body = $content; 
    } 

    function send()  
    { 
        if(mail($this->to, $this->subject, $this->body, $this->headers)) return TRUE; 
        else return FALSE; 
    } 

    function set($key, $value)  
    { 
        if($value) $this->$key = $value; 
        else unset($this->$key); 
    } 
} 
?>

一般来说,我们无法告诉您客户想要什么。你得问问他。:)但是关于发送更多电子邮件的一些一般性建议

在创建电子邮件类时,需要注意的最敏感的事情,以及它不起作用的最可能的原因,是要发送的邮件数量
mail()
是一个发送邮件的非常慢的命令,如果您有数千名成员,纯
mail()
解决方案可能会失败,因为PHP脚本的运行时间通常限制在30或60秒

查看这样的电子邮件类,它们可以直接通过SMTP发送,这要快得多

还要确保检查发送邮件的服务器是否对每个间隔发送的电子邮件数量有任何限制。如果您使用的是主机提供商,请先与他们联系。这也很好,因为这样他们知道你没有滥用他们的服务器进行垃圾邮件

确保在实际开始向实际成员发送之前进行测试运行

还要确保你发送的电子邮件在技术上看起来没有问题,这样它们就不会被垃圾邮件过滤掉。请参阅以获取一些提示

有关面向对象编程的基础知识,请参见有关该主题的

通常,在使用邮件系统时要非常小心。确保你有适当的检查,防止在一切就绪之前实际发送给实际成员。想象一下,向收件人名单上的每个人发送十封“asfsafsd”测试电子邮件是多么尴尬


不要忘记,也有付费服务可以做到这一点。如果涉及一些预算,并且您希望使用现有的付费解决方案,而不是自己动手,您可以在此处设置另一个问题。

一般来说,我们无法告诉您客户想要什么。你得问问他。:)但是关于发送更多电子邮件的一些一般性建议

在创建电子邮件类时,需要注意的最敏感的事情,以及它不起作用的最可能的原因,是要发送的邮件数量
mail()
是一个发送邮件的非常慢的命令,如果您有数千名成员,纯
mail()
解决方案可能会失败,因为PHP脚本的运行时间通常限制在30或60秒

查看这样的电子邮件类,它们可以直接通过SMTP发送,这要快得多

还要确保检查发送邮件的服务器是否对每个间隔发送的电子邮件数量有任何限制。如果您使用的是主机提供商,请先与他们联系。这也很好,因为这样他们知道你没有滥用他们的服务器进行垃圾邮件

确保在实际开始向实际成员发送之前进行测试运行

还要确保你发送的电子邮件在技术上看起来没有问题,这样它们就不会被垃圾邮件过滤掉。请参阅以获取一些提示

有关面向对象编程的基础知识,请参见有关该主题的

通常,在使用邮件系统时要非常小心。确保你有适当的检查,防止在一切就绪之前实际发送给实际成员。想象一下,向收件人名单上的每个人发送十封“asfsafsd”测试电子邮件是多么尴尬


不要忘记,也有付费服务可以做到这一点。如果涉及一些预算,并且您希望使用现有的付费解决方案,而不是自己解决,您可以在此处设置另一个问题。

首先,如果您不知道,您应该询问您的客户他想要什么。否则你就不能继续了。第二,让自己熟悉,尤其是在工作中

首先,如果你不知道,你应该问你的客户他想要什么。否则你就不能继续了。第二,让自己熟悉,尤其是在工作中

拥有一个类是一个非常模糊的要求,因为您可以简单地将代码包装成这样一个类:

class Mailer
{
    public function sendMail()
    {
        // $users = mysql_fetch_array()
        // loop $users
           // mail($user)
    }

}
符合要求。诚然,这是一个糟糕的课程,而且很可能不是你的客户所想的。我建议让您的客户更具体地了解需求,或者他希望类具体做什么,以及他寻求的抽象级别和灵活性

再说一次,当有太多现成的可用类时,没有必要重新设计可以发送电子邮件的类。两个非常灵活的存在和。

拥有一个类是一个非常模糊的要求,因为您可以简单地将代码封装到如下类中:

class Mailer
{
    public function sendMail()
    {
        // $users = mysql_fetch_array()
        // loop $users
           // mail($user)
    }

}
符合要求。诚然,这是一个糟糕的课程,而且很可能不是你的客户所想的。我建议让您的客户更具体地了解需求,或者他希望类具体做什么,以及他寻求的抽象级别和灵活性


再说一次,当有太多现成的可用类时,没有必要重新设计可以发送电子邮件的类。两个非常灵活的存在和。

是的,以上所有答案都是正确的。我一直在使用PHP邮件程序。我个人在我的数据库中有一个“发件箱”表,我在其中排队发送邮件。然后我有一个CRON任务,一次发送块。这不仅让你可以控制你的发送速度,而且如果你“搞砸了”并且发送了错误的东西,你可以很快进入状态