/*PHPMailer是一个用于发送电子邮件的PHP函数包。它提供的功能包括:
*.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址
*.支持多种邮件编码包括:8bit,base64,binary和quoted-printable
*.支持SMTP验证
*.支持冗余SMTP服务器
*.支持带附件的邮件和Html格式的邮件
*.自定义邮件头
*.支持在邮件中嵌入图片
*.调试灵活
*.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等
*.可运行在任何平台之上
phpMailer是一个非常强大的php发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、富文本内容,上传附件,.....
官方网站:http://phpmailer.worxware.com/
下载地址:http://code.google.com/a/apache-extras.org/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 = 'text/html'; //设置在邮件正文不支持HTML时的备用显示
$mail -> Body = '测试邮件的内容';//邮件内容做成
$mail -> IsHTML(true);  //是否是HTML邮件
$mail -> AddAddress('chinajason2008#gmail.com','jasonxu'); //收件人的地址和姓名
$mail -> AddReplyTo('chinajason2008#gmail.com','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 编码
 
而CSV可接受的MIME Type
· application/octet-stream
· text/comma-separated-values(推荐)
· text/csv
所以,csv格式文件的附件类型可以是上面三种中的任意一种

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

$body=$_smtp_body;
$mail=new PHPMailer();//得到一个PHPMailer实例
//$mail->SMTPSecure='tls';
$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@tencent.com","samzhang");     //设置回复的收件人的地址
$mail->SMTPDebug=0;
if($mail->Send()){//发送邮件
exit 'ok';
}else{
exit 'fail';
}

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

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

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’; //只需要加上这句

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

php发送邮件教程,支持发送有附件的电子邮件-PHPMailer使用教程相关推荐

  1. PHP发送带附件的电子邮件,php中PHPMailer发送带附件的电子邮件方法_PHP教程

    在php开发利用PHPMailer发送邮件是常用的做法了,这种比起php mail用好用多了,下面我们来看看PHPMailer如何发送带有附件的电子邮件吧. .首先到http://phpmailer. ...

  2. 使用Spring发送带附件的电子邮件(站内和站外传送)

    1.使用Spring发送带附件的电子邮件 <?xml version="1.0" encoding="UTF-8"?> <beansxmlns ...

  3. php 发送带附件的邮件,php发送带附件的电子邮件

    我似乎无法找到这个我写的php函数的问题,应该发送带附件的电子邮件.我已经挣扎了很长一段时间. function myMail($to, $subject, $mail_msg, $filename, ...

  4. nodemailer 附件_如何使用Nodemailer发送带有附件的电子邮件。 Node.js

    nodemailer 附件 In the previous article, "How to send emails using Nodemailer?", we discusse ...

  5. php 发邮件 带附件,PHP发送带有附件的电子邮件

    我似乎找不到我编写的应该发送带有附件的电子邮件的php函数的问题.我已经为此苦苦挣扎了一段时间了. function myMail($to, $subject, $mail_msg, $filenam ...

  6. php curl发邮件,使用PHP cURL通过Mailgun API发送带附件的电子邮件

    我正在尝试使用cURL通过Mailgun API发送带有1-n附件的电子邮件 . 以下代码成功发送电子邮件,但不包含附件 . 任何人都可以看到为什么以下不起作用?..任何帮助将非常感激 . // In ...

  7. JSP: 使用网易邮箱发送带附件的电子邮件

    JSP代码:使用javax.mail和activation发送邮件 首先我们需要两个jar包,javax.mail.jar和activation.jar,官方下载地址: JAF:JavaBeans A ...

  8. php smtp发送附件,PHP:如何使用smtp设置发送带附件的电子邮件?

    发现此代码是google:// pear邮件附件搜索的首批点击之一. include('Mail.php'); include('Mail/mime.php'); $text = 'Text vers ...

  9. Python+flask+flask-email发送带附件的电子邮件

    运行下面的程序之前,需要使用pip install flask-mail安装电子邮件扩展包. import os.path from flask import Flask from flask.ext ...

最新文章

  1. dataset的去重计数 g2_去互联网公司面试,面试官问我SpringCloud,附答案
  2. python 归并排序(详解)
  3. 重磅开源人工智能大型场景草图数据集图像检索草图着色编辑和字幕
  4. 【渝粤题库】国家开放大学2021春1376机械制造装备及设计题目
  5. Java单例模式简单实现
  6. JAVA入门级教学之(continue)
  7. Java 字符编码与解码
  8. c语言过程化程序设计方法,程序的设计基础(C语言入门及编程环境)(修改).ppt
  9. CoreJavaE10V1P3.10 第3章 Java的基本编程结构-3.10 数组(Arrays)
  10. 计算机中反三角函数怎么算,计算器怎么算反三角函数?
  11. alexa工具条下载_如何聆听(和删除)您给Alexa的每条命令
  12. 有没有手机版_iQOO Neo 855版性价比神机:不到两千,充电一局玩十局
  13. 抓取手机端app日志的方法总结
  14. esxi 创建虚拟交换机_对vSphere虚拟交换机的理解
  15. 手机无法获取电脑热点ip地址
  16. 【问题解决】This container is having trouble accessing https://k8s.gcr.io | 如何解决从k8s.gcr.io拉取镜像失败问题?
  17. URP实现毛玻璃效果一
  18. 开启邮箱的SMTP服务获取授权码(QQ邮箱、163邮箱)
  19. 【Echarts】Echarts给title添加背景图片
  20. 【转载】浅谈蓝牙 Mesh 组网技术

热门文章

  1. 试玩广告及SmartAd平台介绍
  2. 【华人学者风采】汪玉 清华大学
  3. 散列表ADT--分离链接法
  4. 狗屁不通文章生成器登顶GitHub热榜,分分钟写出万字形式主义大作
  5. 用HTML制作简单的个人介绍主页
  6. Word 如何删除页面中的回车符 / 段落标记
  7. GPT-3+DALL-E 2 = 海量带标签数据自动生成 ?
  8. react中列表渲染的局部刷新
  9. python爬虫实训第六天
  10. 视频原理和FFmpeg