Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从其他服务器发送大量电子邮件_Php_Phpmailer_Remote Server_Spam Prevention_Massmail - Fatal编程技术网

Php 从其他服务器发送大量电子邮件

Php 从其他服务器发送大量电子邮件,php,phpmailer,remote-server,spam-prevention,massmail,Php,Phpmailer,Remote Server,Spam Prevention,Massmail,我有两台服务器,ServerA和ServerB。ServerA不支持群发邮件,而ServerB支持MySQL表中有4000多个电子邮件地址 在ServerA上,我为电子邮件创建HTML,在ServerB上,我放置了发送电子邮件的脚本 ob_end_clean(); header("Connection: close"); ignore_user_abort(); // optional ob_start(); echo ('Sending email...'); $size = ob_get_l

我有两台服务器,ServerA和ServerB。ServerA不支持群发邮件,而ServerB支持MySQL表中有4000多个电子邮件地址

在ServerA上,我为电子邮件创建HTML,在ServerB上,我放置了发送电子邮件的脚本

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可以看到我发送电子邮件给的所有其他人。 我问了一些关于优先级的问题,第一个更重要,等等。。 请告诉我在代码逻辑方面有什么问题。

对于第一个问题,我正在检查您的代码

关于问题2 您需要确保您的电子邮件签名服务器与您发送电子邮件的地址具有相同的域名。这是一个很长的主题。这里有一些详细信息

关于问题3


请将所有地址添加到密件抄送收件人(非主地址)以盲拷贝方式发送电子邮件。我建议您使用以下服务:。群发电子邮件需要付出巨大的努力才能正确发送

Mailgun每月免费发送前10000封电子邮件,因此如果您每月发送一到两次这些电子邮件,此服务将是免费的。如果你每周发送一次,那么它们的价格真的很便宜。

检查-开源项目-一项帮助你设置邮件发送者应用程序的服务

它易于安装

为什么订阅? 处理多个应用程序。只需添加应用程序的特定私钥。它将以应用程序的方式处理您的所有退订。 根据您的邮件类型处理多个发件人。在appengine应用程序中添加所有发件人的电子邮件地址。 向客户/用户发送电子邮件时,无需处理退订。服务已经在处理了。附加的取消订阅链接以及给定的正文。
密件抄送仍然可以阅读,因此您几乎会给出不好的电子邮件列表。@Prix请增加您的知识阅读:看起来阅读不是您的强项,从您自己的链接,注意最后一个逗号后的后半部分:取决于电子邮件软件,第三方收件人只能在密件抄送中看到自己的电子邮件地址,也可以看到所有收件人的电子邮件地址。收件人和抄送,是。但不是密件抄送。在这种情况下,最好使用一些外部电子邮件服务,如MailChimp。否则你还有很长的路要走。clearAddresses可以解决1和3,在循环的顶部调用它仍然没有修复…我正在等待有人帮助我…我的代码有什么问题?我尝试了一些服务,但有很多问题,他们询问电子邮件的来源等,如果你无法回复地址的来源,那你就是在自找麻烦。阅读上面的链接,尤其是每周10万封电子邮件,想一想你现在在哪里,你想去哪里。