如何加速Mail()PHP代码
我的代码可以工作,但当客户在web表单中添加两张或更多图片并按send时,我的网站加载速度非常慢。加载大约需要1分钟,实际发送大约需要1-3分钟 我怎样才能加快这个过程如何加速Mail()PHP代码,php,performance,email,Php,Performance,Email,我的代码可以工作,但当客户在web表单中添加两张或更多图片并按send时,我的网站加载速度非常慢。加载大约需要1分钟,实际发送大约需要1-3分钟 我怎样才能加快这个过程 if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['namecontact']) && !empty($_POST['namecarinfo'])) { $contacts = array( //"autop
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['namecontact']) && !empty($_POST['namecarinfo'])) {
$contacts = array(
//"autoperka.info@gmail.com",
//"automobiliukas24@gmail.com",
// "ruslanneviadomskij@gmail.com",
"gabriele.giniot@gmail.com"
);
foreach($contacts as $contact) {
$recipient_email = $contact; //recepient
$from_email = $_POST['namecontact']; //from email using site domain.
$subject = $from_email . " SupirkimasPlius.lt"; //email subject line
$sender_name = $_POST["namecontact"];
$sender_car = $_POST["namecarinfo"];
$sender_message = 'Automobilio pasiūlymas:
Marke/modelis:' . $_POST["namecarinfo"] . 'Kontaktai/miestas:' . $_POST["namecontact"] . 'Komentaras:' . $_POST["namecoment"];
$attachments = $_FILES['namephoto'];
$file_count = count($attachments['name']); //count total files attached
$boundary = md5(time());
if($file_count > 0) { //if attachment exists
//header
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From:" . $from_email . "\r\n";
$headers .= "Reply-To: " . $sender_car . "" . "\r\n";
$headers .= "Content-Type: multipart/mixed; boundary = $boundary\r\n\r\n";
//message text
$body = "--$boundary\r\n";
$body .= "Content-Type: text/plain; charset=ISO-8859-1\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n\r\n";
$body .= chunk_split(base64_encode($sender_message));
//attachments
for($x = 0; $x < $file_count; $x++) {
if(!empty($attachments['name'][$x])) {
/*if($attachments['error'][$x]>0) //exit script and output error if we encounter any
{
$mymsg = array(
1=>"Įkeltos nuotraukos/ų dydis per didelis",
2=>"Įkeltos nuotraukos/ų dydis per didelis",
3=>"Įkėlimo klaida, pabandykite dar kartą",
4=>"Nėra įkeltų nuotraukų",
6=>"Įkėlimo klaida" );
die($mymsg[$attachments['error'][$x]]);
}*/
//get file info
$file_name = $attachments['name'][$x];
$file_tmp_name = $attachments['tmp_name'][$x];
$file_size = $attachments['size'][$x];
$file_type = $attachments['type'][$x];
//read file
$handle = fopen($file_tmp_name, "r");
$content = fread($handle, $file_size);
fclose($handle);
$encoded_content = chunk_split(base64_encode($content)); //split into smaller chunks (RFC 2045)
$body .= "--$boundary\r\n";
$body .= "Content-Type: $file_type; name=\"$file_tmp_name\"\r\n";
$body .= "Content-Disposition: attachment; filename=\"$file_tmp_name\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "X-Attachment-Id: " . rand(1000, 99999) . "\r\n\r\n";
$body .= $encoded_content;
}
}
} else { //send plain email otherwise
$headers = "From:" . $from;
$body = $sender_message;
}
$sentMail = mail($recipient_email, $subject, $body, $headers);
} //foreach uzdaro
}
if($sentMail) //output success or failure messages
{
$myfile = fopen("success.php", "r") or die(fopen("index.php", "r"));
echo fread($myfile, filesize("success.php"));
fclose($myfile);
//mail('gabriele.giniot@gmail.com',$subject,$message,$headers);
//mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender
} else {
$myfile = fopen("failed.php", "r") or die(fopen("index.php", "r"));
echo fread($myfile, filesize("failed.php"));
fclose($myfile);
}
if($\u SERVER['REQUEST\u METHOD']='POST'&&!empty($\u POST['namecontact'])&&!empty($\u POST['namecarinfo'])){
$contacts=数组(
//“autoperka。info@gmail.com",
//"automobiliukas24@gmail.com",
// "ruslanneviadomskij@gmail.com",
“加布里埃尔。giniot@gmail.com"
);
foreach($contacts作为$contact){
$recipient\u email=$contact;//recepient
$from_email=$_POST['namecontact'];//来自使用站点域的电子邮件。
$subject=$from_email.“SupirkimasPlius.lt”;//电子邮件主题行
$sender\u name=$\u POST[“namecontact”];
$sender\u car=$\u POST[“namecarinfo”];
$sender_message='Automobilio pasiūlymas:
Marke/modelis:“.$”POST[“namecarinfo”]。“Kontaktai/miestas:“.$”POST[“namecontact”]。“Komentaras:”。$”POST[“namecoment”];
$attachments=$_文件['namephoto'];
$file_count=count($attachments['name']);//计算附加的文件总数
$boundary=md5(time());
如果($file_count>0){//如果附件存在
//标题
$headers=“MIME版本:1.0\r\n”;
$headers.=“发件人:”。$From\u电子邮件。“\r\n”;
$headers.=“回复:”.$sender\u car.“\r\n”;
$headers.=“内容类型:多部分/混合;边界=$boundary\r\n\r\n”;
//消息文本
$body=“--$boundary\r\n”;
$body.=“内容类型:文本/普通;字符集=ISO-8859-1\r\n”;
$body.=“内容传输编码:base64\r\n\r\n”;
$body.=chunk_split(base64_编码($sender_message));
//附件
对于($x=0;$x<$file\u count;$x++){
如果(!empty($attachments['name'][$x])){
/*if($attachments['error'][$x]>0)//如果遇到任何问题,请退出脚本并输出错误
{
$mymsg=数组(
1=>“每一个迪代利斯都有一个新的基尔托斯/迪迪迪斯”,
2=>“每一个迪代利斯都有一个新的世界”,
3=>“卡里达,帕班迪基特”,
4=>Nėraįkeltųnuotraukų,
6=>“克利莫·克莱达”);
骰子($mymsg[$attachments['error'][$x]]);
}*/
//获取文件信息
$file_name=$attachments['name'][$x];
$file_tmp_name=$attachments['tmp_name'][$x];
$file_size=$attachments['size'][$x];
$file_type=$attachments['type'][$x];
//读取文件
$handle=fopen($file\u tmp\u name,“r”);
$content=fread($handle,$file\u size);
fclose($handle);
$encoded_content=chunk_split(base64_encode($content));//分割成更小的块(RFC 2045)
$body.=“--$boundary\r\n”;
$body.=“内容类型:$file\u Type;名称=\”$file\u tmp\u name\“\r\n”;
$body.=“内容配置:附件;文件名=\”$file\U tmp\U name\“\r\n”;
$body.=“内容传输编码:base64\r\n”;
$body.=“X-Attachment-Id:”.rand(100099999)。“\r\n\r\n”;
$body.=$encoded\u内容;
}
}
}else{//否则发送普通电子邮件
$headers=“From:”.$From;
$body=$sender\u消息;
}
$sentMail=mail($recipient\u email,$subject,$body,$headers);
}//foreach uzdaro
}
if($sentMail)//输出成功或失败消息
{
$myfile=fopen(“success.php”,“r”)或die(fopen(“index.php”,“r”));
echo-fread($myfile,filesize(“success.php”);
fclose($myfile);
//邮寄给加布里埃尔。giniot@gmail.com“,$subject,$message,$headers);
//邮件($from、$subject2、$message2、$headers2);//向发件人发送邮件副本
}否则{
$myfile=fopen(“failed.php”,“r”)或die(fopen(“index.php”,“r”));
echo-fread($myfile,filesize(“failed.php”);
fclose($myfile);
}
问题可能是图像太大,上传速度太慢,或者系统/邮件服务器速度太慢。但是你可以试试。这将降低代码的复杂性,并可能提高性能。也来看看。然后,您的代码将如下所示
//first upload your attachments to a temp-directory (tmp/)
for ($i = 0; $i < count ($_FILES['namephoto']['tmp_name']); $i++)
move_uploaded_file ($_FILES['namephoto']['tmp_name'][$i], 'tmp/'.$_FILES['namephoto']['name'][$i]);
//initialize phpmailer
$mail = new PHPMailer ();
//set smtp credentials
$mail->Host = 'smtp1.example.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'user@example.com'; // SMTP username
$mail->Password = 'secret'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;
//set from-address
$mail->setFrom ($_POST['namecontact']);
//add recipients
foreach ($contacts as $contact)
$mail->addAddress ($contact);
//add attachments
for ($i = 0; $i < count ($_FILES['namephoto']['name']); $i++)
$mail->addAttachment ('tmp/'.$_FILES['namephoto']['name'][$i]);
//set subject and body
$mail->Subject = $from_email.' SupirkimasPlius.lt';
$mail->Body = 'Automobilio pasiūlymas: Marke/modelis: '.$_POST["namecarinfo"].' Kontaktai/miestas: '.$_POST["namecontact"].'Komentaras:'.$_POST["namecoment"];
//send your mail
$sentMail = $mail->send ();
//check if successfully sent
if ($sentMail) {...} else {...}
//首先将附件上载到临时目录(tmp/)
对于($i=0;$iHost='smtp1.example.com';//指定主SMTP服务器和备份SMTP服务器
$mail->SMTPAuth=true;//启用SMTP身份验证
$mail->Username=user@example.com'; // SMTP用户名
$mail->Password='secret';//SMTP密码
$mail->SMTPSecure='tls';//启用TLS加密,也接受'ssl'
$mail->Port=587;
//从地址设置
$mail->setFrom($_POST['namecontact']);
//添加收件人
foreach($contacts作为$contact)
$mail->addAddress($contact);
//添加附件
对于($i=0;$iaddAttachment('tmp/'.$_文件['namephoto']['name'][$i]);
//设置主题和主体
$mail->Subject=$from_email.'SupirkimasPlius.lt';
$mail->Body='Automobilio pasiūlymas:Marke/modelis:'.$(POST[“namecarinfo”].$(Kontaktai/miestas:'.$)POST[“namecompact”].$(POST[“namecompent”].$);
//发邮件
$sentMail=$mail->send();
//检查是否成功发送
如果($sentMail){…}其他{…}
邮件服务器在哪里,有多大