我需要创建一个PHP类,将电子邮件发送给网站的所有成员。简单的mysql_fetch_array和循环不适合,因为我的客户想要一个类,而我实际上对类和他确切需要的知之甚少。你能解释还是给我提示?如何向班级的所有网站成员发送电子邮件?
回答
一般来说,我们不能告诉你你的客户想要什么。你必须问他。 :)但是发送大量电子邮件的几个一般指针。
将电子邮件类放在一起时,要注意的最敏感的事情以及最不可能的原因是发送邮件的数量。 mail()
是发送邮件的非常缓慢的命令,如果您有成千上万的成员,纯粹的mail()
解决方案可能会失败,因为PHP脚本的运行时间通常限制为30或60秒。
查看电子邮件类,如PHPMailer,可以通过SMTP直接发送,这是更快的方式。
此外请务必检查发送邮件的服务器是否对每个间隔的传出电子邮件数量有任何限制。如果您使用托管服务提供商,请先与他们交谈。这也很好,因为他们知道你不会滥用他们的服务器来发送垃圾邮件。
务必在实际开始发送给实际成员之前进行测试运行。
此外请确保您即将离任的电子邮件看起来o.k.从技术上讲,所以他们不会被垃圾邮件过滤。请参阅this question了解几点。
有关面向对象编程的基础知识,请参阅关于这个问题的PHP Manual。
通常,在邮件系统上工作时要非常小心。确保你有足够的支票阻止实际的发送到实际的成员之前,一切都按顺序。想象一下,让十个“asafafsd”测试电子邮件发送给收件人列表中的每个人是多么令人尴尬。
不要忘记,有付费服务可以做到这一点。如果涉及一些预算,并且您希望使用现有的付费解决方案而不是自己完成,则可以在此处设置另一个问题。
如果可以使用phpmailer是一类处理所有邮件发送,
或使用来自phpclasess网站(需要注册)一类
http://www.phpclasses.org/browse/package/1553.html
类代码:
<?
/* sendMail Class - by André Cupini - [email protected] */
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);
}
}
?>
这段代码看起来非常糟糕,请不要使用它。在发送邮件之前,您甚至必须自己调用每个方法(如'setHeaders')。看起来这个班让事情变得更加复杂。 – 2010-01-06 16:32:18
那么首先你应该问问你的客户,如果你不知道他想要什么。否则,你不能继续。其次,让自己熟悉Object Oriented Programming,特别是在PHP。
是的,以上所有答案都是正确的。我一直使用PHP Mailer。我个人在我的数据库中有一个“发件箱”表,用于排队传出消息。然后,我有一个CRON工作一次完成并发送大块数据。这不仅可以让您对您的发送速率控制,但如果你“陷入困境”,并发送一些错误,您可以快速进入数据库,并清除他们都出去的cron恶有恶报之前。我甚至在我的大项目中实施了重点工作,这样重要的电子邮件就会在诸如简报之类的事情之前消失。
祝你好运!
- 1. 如何通过ASP.NET向成员发送批量电子邮件?
- 2. 有机团体管理员如何向所有团队成员发送大量电子邮件?
- 3. 备份网站文件和向他们发送电子邮件
- 4. 如何从我的网站发送电子邮件?
- 5. 如何向Laravel重新发送未发送的电子邮件?
- 6. 如何使用工作流向一个团队的所有成员发送电子邮件?
- 7. 如何将所有电子邮件合并到我的网站?
- 8. 发送PHP确认电子邮件管理员电子邮件发送
- 9. 发生500错误时向管理员发送电子邮件
- 10. 如何发送自动电子邮件给没有激活帐户的成员
- 11. 如何重新发送所有失败的电子邮件(msdb.dbo.sp_send_dbmail)
- 12. 如何发送电子邮件到特定的电子邮件?
- 13. 如何向plesk 9.5.4中的所有客户发送电子邮件?
- 14. 如何向所有数据输入的用户发送电子邮件
- 15. 生成的电子邮件,不发送
- 16. Laravel - 如何发送电子邮件给所有用户
- 17. HTML向电子邮件发送答案
- 18. PHP发送电子邮件多次发送电子邮件
- 19. 如何通过电子邮件发送电子邮件地址
- 20. 总是向管理员发送确认电子邮件
- 21. 发送电子邮件与OVH托管网站的问题
- 22. 在php中发送电子邮件时的网站性能
- 23. 公共网站的“发送电子邮件”功能
- 24. PHP不从我的网站发送电子邮件
- 25. PHPMailer的回声的向成功发送的电子邮件
- 26. 从asp.net 4.0网站向多个收件人发送电子邮件
- 27. ASP.net 3.5发送网页电子邮件
- 28. “无法发送电子邮件,请与网站管理员联系。”
- 29. Log4Net +完成后发送电子邮件?
- 30. 发送电子邮件完成
要求你的客户,以澄清他想要的东西。你的问题没有多大意义,因为它是。 – 2010-01-06 11:20:49