簡體   English   中英

如何使用php在較短的時間內發送批量電子郵件?

[英]How to send bulk emails in less time using php?

我正在發送大量電子郵件,但仍在工作,但很花時間。 我只將電子郵件發送給10個用戶,大約需要2分鍾。 我必須發送超過10000個用戶的電子郵件。 快速發送電子郵件的另一種方法是什么? 我正在使用PHPMailer。 您能幫我嗎?

index.php

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

<form action="process.php?key=createmail2" method="POST">
     <input type="text" name="emailtemplate" placeholder="email" >
     <input type="text" name="subject" placeholder="subject">
      <textarea name="mailbody" placeholder="mail body"></textarea>
      <input type="submit" name="addmail" value="Add mail" >
</form>
</body>
</html>

Process.php

<?php 
include('mail/PHPMailerConfig.php');
switch($_GET['key']) {
case 'createmail2':createmail2($conn);break;
default : redirect('index.php');
}

function createmail2(){
  $array=explode(",",$_POST['emailtemplate']);
  $arrlength = count($array);
  $subject=$_POST['subject'];
  $mailbody=$_POST['mailbody'];
  send($array,$arrlength, $subject, $mailbody);
}
 ?>

PHPMailerConfig.php

<?php 
require_once('PHPMailerAutoload.php');
function send($array,$arrlength, $subject, $mailbody){
$mail = new PHPMailer;
$mail->IsSMTP();
$mail->SMTPDebug = 0;
$mail->Debugoutput = 'html';
$mail->Host = '*****';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "abc@domain.com";
$mail->Password = "************";
$mail->setFrom('abc@domain.com', 'Teseting for email');
$mail->Subject = $subject;
$mail->Body =$mailbody;

for($x = 0; $x < $arrlength; $x++)
 {
   $mail->addAddress($array[$x]);

       if (!$mail->send())
     {
        echo "Mailer Error (" . str_replace("@", "&#64;", $array[$x]) . ') ' . $mail->ErrorInfo .   '<br/>';
        break; //Abandon sending
     } 
       else 
     {
        echo "mail sent to : " . $array[$x] ;

     }
     $mail->clearAddresses();
  }
}

與PHPMailer捆綁在一起的示例中,一個示例如何有效地從數據庫發送到列表 通過使用PHPMailer發送大量郵件,天生就不可能使您進入黑名單,但是您需要謹慎行事。 Mandrill不是魔術,如果您通過垃圾郵件發送垃圾郵件,那么它就像其他任何東西一樣容易被阻止。

如果您想同時從PHP發送50個消息,請使用pcntl擴展啟動多個進程,但實際上並不會帶來多大幫助,因為這將大大增加開銷。 您可以在PHPMailer中設置SMTPKeepAlive = true ,這將大大減少開銷(避免為每條消息建立新的連接),但仍然不會同時發送消息-什么也不會發送。 SMTP中沒有選項,可以在同一連接上同時發送具有不同正文的多個郵件。

在瀏覽器頁面加載期間發送到大列表非常不可靠; 使用cron腳本或后台進程進行實際發送,只需通過Web界面進行設置即可。 一個提示,如果您正在等待頁面加載-請ignore_user_abort()調用ignore_user_abort() ,以便在您的瀏覽器關閉連接時它不會停止發送-提防頁面刷新! 如果您想更快地發送郵件,請安裝本地郵件服務器(如postfix),然后使用該郵件服務器進行中繼-與直接發送相比,它將更快,更可靠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM