我有两台服务器,ServerA 和 ServerB。ServerA 不支持群发邮件,而 ServerB 支持(我在 MySQL 表中有超过 4000 个电子邮件地址)。
在 ServerA 上,我正在为电子邮件创建 HTML,在 ServerB 上,我放置脚本来发送电子邮件。我在 ServerA 上运行此代码
ob_end_clean();
header("Connection: close");
ignore_user_abort(); // optional
ob_start();
echo ('Sending email...');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush(); // Will not work
flush(); // Unless both are called !
$postdata = http_build_query(
array(
'subject'=>'Latest Rentals Properties',
'message' => $message //email body html
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$result = @file_get_contents('http://ServerB.com/send_email.php', false, $context);
if($http_response_header[0]=="HTTP/1.1 404 Not Found"):echo "404";
elseif($http_response_header[0]=="HTTP/1.1 200 OK"):echo "OK";
else "ERROR";
在 ServerB.com 上,send_email.php 有这个代码来发送电子邮件(我正在使用 class.phpmailer.php)
$subject = $_REQUEST['subject'];
$message1 = $_REQUEST['message'];
$mail->SetFrom("from@ServerB.com", '');
$rs = $oBj->query("SELECT email FROM `crm_test_emails` where is_active = 1 ");
while ( $rw = $oBj->row($rs) ){
$email= $rw['email'];
$message1 = str_replace("########",$email,$message1);
$mail->AddAddress($email, "");
$mail->Subject = $subject;
$mail->MsgHTML($message1);
$mail->Send();
}
我的问题是
- 一个电子邮件地址收到超过 500 封相同的电子邮件(发送重复)。
- 电子邮件直接进入垃圾邮件。
- 我不希望任何人看到其他人的电子邮件。现在一个电子邮件 ID 可以看到我向其发送电子邮件的所有其他人。
我问了关于优先级的问题,第一个更重要等等。请指导我在代码逻辑中遇到的问题。