php发邮件附带附件 [ 2.0 版本 ]
现在有个功能就是发邮件并且是包含附件的,我使用的是PHPMailer这个类库,现在是可以成功的 但是附件如果很大(我试过30M的,就卡在那,很久后才收到邮件) 就卡死了
相关场景是这样的:点击确定按钮,就发一封邮件(当然还有其他数据库操作),我的想法是把发邮件作为异步处理,让他在后台运行,可是这个时候发现更卡
相关代码如下:
/** 点击确定按钮 **/
$this->sendemailFj(); //调用fsockopen方法
show_msg("提交成功", $url = site_url() . "zhenghe/inspection/inspectionOrderList/auditreport");//操作成功后的
提示
function sendemailFj(){
$fp = fsockopen("www.testcoo.cn", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /zhenghe/test/yibu / HTTP/1.1\r\n";
$out .= "Host:www.testcoo.cn \r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
/*忽略执行结果
while (!feof($fp)) {
echo fgets($fp, 128);
}*/
fclose($fp);}
}
function yibu(){
require_once 'sendmail.php';
sendMail('1096415969@qq.com', 'ssss', 'content');
}
function sendEmail($tomail,$title,$content){
require_once 'PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'xxx.ym.163.com';
$mail->SMTPAuth = true;
$mail->Username = 'xxxx@xxxx.com';
$mail->Password = 'xxxx';
$mail->SMTPSecure = 'tls';
$mail->Port = 25;
$mail->CharSet ="UTF-8";
$mail->setFrom('xxx@xxxx.com', 'test');
$mail->addAddress($tomail);
$path = dirname(__FILE__);
$mail>addAttachment($path.'\static\zhan\uploads\reportpdf\test.zip','test.zip'); // 添加附件,并指定名称
$mail->isHTML(true);
$mail->Subject = $title;
$mail->Body = $content;
$mail->AltBody = $content;
if(!$mail->send()) {
return false;
} else {
return true;
}
}
相关代码如上,点击按钮,执行sendemailFj方法,sendemailFj方法有调用yibu方法,yibu方法调用发邮件方法,这个时候的现象是:页面加载20几分钟左右,然后跳出‘提交成功’的弹框,过个好几分钟后,邮件才收到,(个人发现前面20分钟虽然在加载,但是压根不是发邮件,弹框跳出后,才开始发邮件)
不知道有什么好的解决思路,文件小时没问题的
共 1 个回答
xyf90314
注册时间:2015-03-04
最后登录:2023-03-13
在线时长:95小时23分
最后登录:2023-03-13
在线时长:95小时23分
- 粉丝21
- 金钱5257
- 威望40
- 积分6607