200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)【PHP】

使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)【PHP】

时间:2020-05-25 19:08:40

相关推荐

使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)【PHP】

后端开发|php教程

php,phpmailer

后端开发-php教程

网易在线音乐源码,vscode快捷键打印,删除ubuntu密码,工程不让添加tomcat,爬虫店招人,php判断360浏览器,安徽seo哪家信誉好,实用小工具网站源码,shopex仿oppo模板lzw

/*PHPMailer是一个用于发送电子邮件的PHP函数包。它提供的功能包括:

*.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址

*.支持多种邮件编码包括:8bit,base64,binary和quoted-printable

*.支持SMTP验证

*.支持冗余SMTP服务器

*.支持带附件的邮件和Html格式的邮件

*.自定义邮件头

*.支持在邮件中嵌入图片

*.调试灵活

*.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等

*.可运行在任何平台之上

销售网站模板源码,vscode是编译吗,ubuntu用vscode,tomcat实现架构,sqlite 返回列中的值,网络爬虫爬取酷狗音乐,php获取手机信息,壹站传媒SEO优化,网站跳转源码下载,网页代码dz,集成应用平台页面模板lzw

phpMailer是一个非常强大的php发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、富文本内容,上传附件,.....

官方网站:/

下载地址:/a/apache-/p/phpmailer/downloads/list

*/

require_once(include/PHPMailer/class.phpmailer.php); //导入PHPMAILER类

$mail = new PHPMailer(); //创建实例

$mail -> CharSet=utf-8; //设置字符集

$mail -> SetLanguage(ch,include/PHPMailer/language/); //设置语言类型和语言文件所在目录

$mail -> IsSMTP(); //使用SMTP方式发送

$mail -> SMTPAuth = true; //设置服务器是否需要SMTP身份验证

$mail -> Host = SMTP_SERVER; //SMTP 主机地址

$mail -> Port = SMTP_SERVER_PORT; //SMTP 主机端口

$mail -> From = SMTP_USER_MAIL; //发件人EMAIL地址

$mail -> FromName = jasonxu; //发件人在SMTP主机中的用户名

$mail -> Username = SMTP_USER_NAME; //发件人的姓名

$mail -> Password = SMTP_USER_PASS; //发件人在SMTP主机中的密码

$mail -> Subject = 测试邮件的标题; //邮件主题

$mail -> AltBody = ext/html; //设置在邮件正文不支持HTML时的备用显示

$mail -> Body = 测试邮件的内容;//邮件内容做成

$mail -> IsHTML(true); //是否是HTML邮件

$mail -> AddAddress(chinajason#,jasonxu); //收件人的地址和姓名

$mail -> AddReplyTo(chinajason#,jasonxu); //收件人回复时回复给的地址和姓名

$mail -> AddAttachment(include/id.csv,att.csv);//附件的路径和附件名称

if(!$mail -> Send()) //发送邮件

var_dump($mail -> ErrorInfo); //查看发送的错误信息

注意:phpmailer如果添加附件的时候,在附件名称里一定要写明附件的后缀,如果不写明附件后缀,默认的附件后缀会是.txt。

比如$mail -> AddAttachment(‘include/id.csv’,’att’);//附件的路径和附件名称

如果向上面一样添加附件发送,则最终接到的附件可能是att.txt。

AddAttachment可以设置附件编码方式和附件类型,比如上面的附件添加也可以设置为

$mail -> AddAttachment(‘include/id.csv’,’att.csv’,”binary”,”text/comma-separated-values”);//附件的路径和附件名称、

附件的编码方式大概有这么几种:支持8bit, base64, binary, and quoted-printable 编码

安装源码下载,ubuntu不能连续按键,tomcat7w配置内存,新城子爬虫馆,用什么软件学习php技术,seo厂商电话lzw

而CSV可接受的MIME Type

· application/octet-stream

· text/comma-separated-values(推荐)

· text/csv

所以,csv格式文件的附件类型可以是上面三种中的任意一种

以前项目中邮件发送的一个实例,整理个缩略版,方便套用:

$body=$_smtp_body;

$mail=new PHPMailer();//得到一个PHPMailer实例

//$mail->SMTPSecure= ls;

$mail->CharSet="utf-8"; //设置编码

$mail->IsSMTP();//设置采用SMTP方式发送邮件

$mail->Host=$_smtp_server;//设置SMTP邮件服务器的地址

$mail->Port=$_smtp_port;//设置邮件服务器的端口,默认为25

$mail->From=$_smtp_from_mail; //设置发件人的邮箱地址

$mail->FromName=$_smtp_from_name;//设置发件人的姓名

$mail->Username=$_smtp_username;

$mail->Password=$_smtp_password;

$mail->AddAddress("$email","");//设置收件的地址(参数1)和姓名(参数2)

$mail->SMTPAuth=true;//开启SMTP认证

$mail->Subject=$_smtp_subject;//设置邮件的标题

//$mail->AltBody="text/html";

$mail->Body=$body;//邮件内容

$mail->IsHTML(true);//设置内容是否为html类型

//$mail->WordWrap=50; //设置每行的字符数

//$mail->AddReplyTo("samzhang@","samzhang");//设置回复的收件人的地址

$mail->SMTPDebug=0;

if($mail->Send()){//发送邮件

exit ok;

}else{

exit fail;

}

大概记得以前初次使用PHPMailer的时候,出现过莫名奇妙的问题,也在网上花了不少时间找资料,最终才得以解决。目前记得服务器PHP环境不能禁止fsockopen函数,否则邮件发送不了,但也有解决的办法。总之,一开始使用,总有不顺,由于时间久远,现在想来,也不知道具体改了什么。所以,将现在正在使用的PHPMailer目录文件打包上传到CSDN,也为方便以后使用吧,同时也方便为此事烦恼的朋友。PHPMailer下载:/04/yuanma/PHPMailer_phpnet.rar

另外,将当时出现的问题所收录的内容整理如下:

1、Error: Could not connect to SMTP host

原因1:不邮邮件系统要求的smtp请求不同一,但是都允许大写,有些不支持小写,比如网易,腾讯的邮箱。(至于是不是这样,我没测试过,反正都改为大写,也不影响)

解决方法:

public function IsSMTP() {

$this->Mailer =SMTP; // 将smtp ->SMTP ;即原来是小写,现在大写。

}

// Choose the mailer and send through it

switch($this->Mailer) {

case sendmail:

return $this->SendmailSend($header, $body);

case SMTP://同样 将smtp ->SMTP ;即原来是小写,现在大写。

return $this->SmtpSend($header, $body);

case mail:

default:

return $this->MailSend($header, $body);

}

2、SMTP Error: Could not connect to SMTP host

原因:有的虚拟主机,或服务器,为了安全起见屏蔽了“fsockopen()函数”导致无法发送邮件

解决方法:

启用fsockopen函数

首先,在php.ini中去掉下面的两个分号

;extension=php_sockets.dll

;extension=php_openssl.dll

替换fsockopen函数

可以将class.smtp.php文件中fsockopen函数换成pfsockopen函数

3、Could not instantiate mail function

原因:

设置的参数不正确,我使用了gmail做一些基本测试,需要在次设置其他参数。

解决方法:

$mail->SMTPSecure = ‘tls’; //只需要加上这句

注:这种错误我没碰到过,所以在上面的例子中,这个内容我是加了注释的。如果碰到这种错误的,可以使用这句试试。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。