最近在发送邮件的时候尝试了phpmailer,但是在使用过程中还是遇到了一些问题,所以记录下来。这些是在做的过程中遇到的主要问题。1.例行测试时,发现邮件发送速度极慢。这里的主要原因是这句话:$this->smtp_conn=@stream_socket_client($host.":".$port,$errno,$errstr,$timeout,STREAM_CLIENT_CONNECT,$socket_context);$SMTPDebug设置为2。默认设置为0,不会处理任何内容;2.发邮件需要加抄送人。可以这样设置:if(is_string($addCC)){$mail->addCC("xxx@qq.com");//设置邮件抄送人,可以只写地址,上面的设置即可也只写地址}elseif(is_array($addCC)){foreach($addCCas$k=>$v){$mail->addCC($v);}}3。添加附件if($is_attachment){$mail->AddAttachment($attachment_add);//可以添加附件}4.新版本有时会报错MAILFROMcommandfailed:501mailfromaddressmustbesameasauthorizationuser;这里主要是没有设置来源:$mail->setFrom("xxx@qq.com","test");5、有时需要添加复制功能,可以这样设置。添加数组时,分批添加cc,一个字符串为单个cc。if(is_string($addCC)){$mail->addCC("wangqian@jiguo.com");//设置邮件抄送,可以只写地址,上面的设置也可以只写地址}elseif(is_array($addCC)){foreach($addCCas$k=>$v){$mail->addCC($v);}}最后附上一个简单的实现函数/***$username用户名*$password密码*$setFromusername发件人姓名*$send_mail要发送的邮件地址*$addCC邮件地址到CC*$title邮件标题*$content邮件内容*$is_attachment需要附件*$attachment_add附件地址*/functionsend($username,$password,$setFromusername,$send_mail,$addCC,$title,$content="",$is_attachment=0,$attachment_add=""){$mail=newPHPMailer();如果(is_string($send_mail)){$send_mail[]=$send_mail;}foreach($send_mailas$k=>$v){$mail->IsSMTP();$mail->CharSet='UTF-8';//设置邮件的字符编码,这个很重要,否则中文乱码$mail->SMTPAuth=true;//启用身份验证$mail->Port=465;$mail->Host="smtp.exmail.qq.com";$mail->用户名=$用户名;$邮件->密码=$密码;$邮件->SMTPSecure='ssl';$mail->setFrom($username,$setFromusername);$to=$v;$mail->AddAddress($to);if(is_string($addCC)){$mail->addCC($addCC);//设置邮件抄送,可以只写地址,上面的设置也可以只写地址}elseif(is_array($addCC)){foreach($addCCas$k=>$v){$mail->addCC($v);}}$mail->Subject=$title;$邮件->正文=$内容?$内容:$标题;$mail->AltBody=$content?$内容:$标题;;//当邮件不支持html时,可以省略作为备用显示$mail->WordWrap=80;//设置每行的长度if($is_attachment){$mail->AddAttachment($attachment_add);//是添加附件}$mail->IsHTML(true);$邮件->发送();}echo'邮件已发送';}
