PHP梅勒发送简讯
知道你是否你们帮我一点点,因为我用PHP邮件瞎搞,我已经修改这个代码,但是从这里http://www.askapache.com/php/phpfreaks-eric-rosebrocks-phpmailer-tutorial.htmlPHP梅勒发送简讯
发送单封电子邮件是通过PHP邮件工作正常(与一个不同的脚本),但现在试图发送到多个电子邮件与数据库下面的脚本目前不工作..你能发现它有什么问题吗?虽然我想知道它是否真的用数据库中的电子邮件做任何事情..我有点困惑。
脚本不会成功并打印的名字,但不发送任何电子邮件了!至少没有收到..(不是垃圾邮件)任何帮助?对不起,如果这是非常明显的!
<?php
// Grab our config settings
require_once($_SERVER['DOCUMENT_ROOT'].'/mail/config.php');
// Grab the FreakMailer class
require_once($_SERVER['DOCUMENT_ROOT'].'/mail/lib/MailClass.inc');
//set execution time limit to 5 minutes
$safeMode = (@ini_get("safe_mode") == 'On' || @ini_get("safe_mode") === 1) ? TRUE : FALSE;
if ($safeMode === FALSE) {
set_time_limit(300); // Sets maximum execution time to 5 minutes (300 seconds)
// ini_set("max_execution_time", "300"); // this does the same as "set_time_limit(300)"
}
echo "max_execution_time " . ini_get('max_execution_time') . "<br>";
//db connection
$con = mysql_connect("xx","xx","xx");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("xx", $con);
// Setup body
$textBody = "Dear {MEMBER_NAME},\n\nTEST";
$htmlBody = "Dear {MEMBER_NAME},<br /><br />TEST";
// instantiate the class
$mailer = new FreakMailer();
// Get the user's Email
$sql = mysql_query("SELECT displayname,email FROM engine4_users2")or die(mysql_error());
//lets reset the time limit of the server everytime an email is sent to bypass maximum
while (1==1) {
set_time_limit(30); // sets (or resets) maximum execution time to 30 seconds)
// .... put code to process in here
while($row = mysql_fetch_object($sql))
{
// Send the emails in this loop.
$member_name = $row->displayname;
if($row->MailType == 'html')
{
$mailer->Body = str_replace('{MEMBER_NAME}', $member_name, $htmlBody);
$mailer->IsHTML(true);
$mailer->AltBody = str_replace('{MEMBER_NAME}', $member_name, $textBody);
}
else
{
$mailer->Body = str_replace('{MEMBER_NAME}', $member_name, $textBody);
$mailer->isHTML(false);
}
$mailer->Send();
$mailer->ClearAddresses();
$mailer->ClearAttachments();
$mailer->IsHTML(false);
echo "Mail sent to: " . $member_name . "<br />";
}
usleep(1000000); // sleep for 1 million micro seconds - will not work with Windows servers/PHP4
// sleep(1); // sleep for 1 seconds (use with Windows servers/PHP4
if (1!=1) {
break;
}
}
?>
您从未将用户的地址设置为邮件程序。
$mailer->AddAddress($row->email);
之前send()
被调用。因为您要在循环中发送邮件,所以每个用户都会收到一封邮件,并且不会看到其他地址。
(你链接的实况的例子是不完整的,如下意见披露)
你可以或者只放一个
$mail->AddBCC($row->email);
在循环
和邮寄者的代码循环之后的其余部分发送一封邮件给所有人,但除了密送抄送地址以外,您还需要一个(虚拟)地址作为收件人才能发送邮件。
if($row->MailType == 'html')
您没有在查询中选择MailType。你是否启用了错误报告?
谢谢,得到它的工作:)我意识到像你说的,它在一个循环,所以只需添加地址!没有搞砸 – user1250526 2012-07-06 12:49:31
是否有原因,你不使用phpmailer?为phpmailer下载.php文件并使用此代码,就像一个魅力:
<?php
$sql = mysql_query("SELECT displayname,email FROM engine4_users2")or die(mysql_error());
//
//
require_once('../../mailer/class.phpgmailer.php');
require_once ('../../mailer/class.smtp.php');
require_once('../../mailer/phpmailer.lang-en.php');
$debug = new SMTP();
$debug->do_debug = 2;
while ($record = mysql_fetch_array ($sql)) {
$mail = new PHPGMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "mail.zzxxyyhost.com"; // SMTP server
$mail->Port = 26; //designated port, could be different, check your host
$mail->SMTPAuth = TRUE; //smtp authentication may be false, check your host
$mail->Username = "username"; //username
$mail->Password = "password"; //password
$mail->From = "[email protected]";
$mail->FromName = "fromsomeone";
$mail->AddBCC($record['email'], $record["displayname"]); //use bcc for hidden emails
$mail->Subject = "$record["displayname"]";
$mail->Body = "Your body";
if(!$mail->Send())
{
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
// Clear all addresses and attachments for next loop
$mail->ClearAddresses();
$mail->ClearAttachments();
}
?>
我很困惑,我以为我在使用PHPmailer?你的代码不需要我使用SMTP? – user1250526 2012-07-06 00:28:40
仅供参考,我使用上面的脚本发送一个电子邮件到多个地址,它的工作原理。 – 2012-07-06 00:30:24
是的,它确实需要你使用smtp。我注意到你正在使用邮件的扩展版本。如果您将我引用的文件包含在邮件程序目录中,它将会起作用。 – 2012-07-06 00:31:55
的目的是什么,以你上次'if'命令? 'if(1!= 1)'?你是否重新定义了其他地方的号码? – 2012-07-06 00:08:30