我有两台服务器,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();
}
我的问题是
我问了优先问题,第一个更重要,等等...... 请指导我在代码逻辑中遇到问题。
答案 0 :(得分:0)
我建议使用http://www.mailgun.com/之类的服务。大量发送电子邮件需要花费大量精力才能做到正确(请参阅How to send 100,000 emails weekly?)。
Mailgun每月免费提供10,000封电子邮件,因此如果您每月发送一次或两次这些电子邮件,此服务将是免费的。如果你每周都发送一次,那么它们的价格真的很便宜。
答案 1 :(得分:0)
检查Subscribe - 开源项目 - 一种帮助您使用GAE设置邮件发件人应用程序的服务。
易于安装。
答案 2 :(得分:-1)
我正在检查您的代码
问题2的您需要确保您的电子邮件签名服务器具有与发送电子邮件地址相同的域名,这是一个很长的主题,一些细节在这里
http://sendgrid.com/blog/10-tips-to-keep-email-out-of-the-spam-folder/
问题3的
请将所有地址添加到BCC收件人不是主要地址发送电子邮件为盲目复制