请问如何在PHP中配置SMTP?
PHPMailer项目地址:PHPMailer使用git命令克隆到本地,或者直接点击项目页面右下方的“下载ZIP”获取完整的PHPMailer代码包,然后在本地解压。
第1步:启用我们的QQ邮箱发送邮件。
我怎么能说我能在这儿发送邮件呢?其实我们所有的邮箱都可以发邮件,但是如果要在我们的网站里发邮件,就必须设置我们的QQ邮箱,因为我们的网站现在是作为第三方客户端存在的。
第1步:启用我们的QQ邮箱发送邮件。其实我们所有的邮箱都可以发邮件,但是如果要在我们的网站里发邮件,就必须设置我们的QQ邮箱,因为我们的网站现在是作为第三方客户端存在的。
由于我们后面会用SMTP服务器发送,建议在这里开启前两项!当你点击打开时,它会提示:
当你完成上述步骤,你会得到一个授权码。你可以先复制,我们以后用(如果你开了两项,会得到两个授权码,用最后一个授权码!或者点击下面的生成授权码获取新的授权码,必须是最新的!)。
第二步:启用我们的php使用qq邮箱发送邮件,PHPMailer需要PHP的socket扩展支持,而PHPMailer在链接QQ域邮箱时需要ssl加密,固定PHP需要openssl支持,可以查看phpinfo。如果以下两项都存在,那么不管openssl版本号是多少,都可以使用它们;很多虚拟主机中的Php不支持openssl扩展,你可能就悲剧了。
第三步:在PHPMailer上做一些处理。因为我们下载的PHPMailer文件夹里有很多文件,我们并不需要,所以不需要浪费这些内存。我们可以精简这个文件夹。我这里只保存了以下文件:class.phpmailer.php、class.phpmaileroauth.php、class.pop3.php、class.smtp.php和PHPMailerAutoload.php。
/*发送邮件的方法
*@param?$to:接收者?$title:标题?$content:电子邮件的内容
*@return?布尔?真:发送成功?假:发送失败。
*/函数?Sendmail ($ to,$ title,$ content){//介绍PHPMailer的核心文件?使用require_once包含一个警告,以避免PHPMailer类的重复定义。
require _ once(" PHP mailer/class . PHP mailer . PHP ");?
require _ once(" PHP mailer/class . SMTP . PHP ");//实例化PHPMailer核心类
$邮件?=?新的?PHP mailer();//要启用smtp调试吗?开发环境推荐开启吗?你能把生产环境注释掉吗?默认情况下关闭调试模式。
$ mail-& gt;SMTPDebug?=?1;//使用smtp认证发送邮件。
$ mail-& gt;ISS MTP();//smtp需要认证?这一定是真的。
$ mail-& gt;SMTPAuth = true//QQ域电子邮件地址的服务器地址。
$ mail-& gt;主持人?=?SMTP . QQ . com ';//使用ssl加密设置登录验证。
$ mail-& gt;SMTPSecure?=?SSL ';//设置ssl连接到smtp服务器的远程服务器的端口号。之前默认是25,现在新的好像不可用?可选465或587
$ mail-& gt;港口?=?465;//设置smtp的helo头?这是可有可无的任意内容
//?$ mail-& gt;西洛?=?喂?smtp.qq.com?服务器';
//设置发件人的主机域?可有可无?默认为localhost?任何内容,建议用你的域名。
$ mail-& gt;主机名?=?'';//设置发送邮件的编码?可选GB2312?我喜欢utf-8?据说utf8在某些客户端接收消息时会出现乱码。
$ mail-& gt;字符集?=?UTF-8’;//设置发件人姓名(昵称)?任何内容,在收件人邮件的发件人电子邮件地址前显示发件人姓名。
$ mail-& gt;FromName?=?LSGO实验室;//smtp登录账号?在此以字符串格式填写qq号码。
$ mail-& gt;用户名?= ' 12345678 @ QQ . com ';//smtp登录的//密码?使用生成的授权码(我刚才要求您保存的最新授权码)
$ mail-& gt;密码?=?sqyofzbqlfkntbncl ';//设置发件人的邮箱?在这里填写上面提到的“发件人邮箱”。
$ mail-& gt;从哪里?=?12345678 @ QQ . com ';//邮件正文是用html编码的吗?注意这是一个方法。不再是属性?对还是错
$ mail-& gt;isHTML(true);?
//设置收件人的邮箱?这个方法有两个参数?第一个参数是收件人的电子邮件地址?第二个参数是为地址设置的昵称?不同的邮箱系统会自动处理变更?这里的第二个参数意义不大。
$ mail-& gt;AddAddress($to,“lsgo在线通知”);//添加多个收件人?多次调用方法。
//?$ mail-& gt;Addaddress ('XXX @ 163.com ',' lsgo在线通知');
//添加此电子邮件的主题。
$ mail-& gt;主题?=?$ title//添加消息体?如果上面的isHTML设置为true,可以是一个完整的HTML字符串?例如,使用file_get_contents函数读取本地html文件。
$ mail-& gt;身体?=?$内容;//给这封邮件添加附件?这个方法也有两个参数?第一个参数是存储附件的目录(相对目录还是绝对目录)?第二个参数是邮件附件中附件的名称。
//?$ mail-& gt;addAttachment('。/d.jpg ',' mm . jpg ');
//同样,这个方法可以多次调用?上传多个附件
//?$ mail-& gt;addAttachment('。/Jlib-1.1.0.js ',' Jlib . js ');
$状态?=?$ mail-& gt;send();//简单的判断和提示信息
如果($状态)?{返回?真实;
}else{return?假的;
}
} & lt?phprequire_once("。/functions . PHP ");$flag?=?SendMail('456789@qq.com ',' lsgo在线通知','祝贺您成功加入LSGO实验室,开始您的学习之旅!');if($flag){echo?“邮件发送成功!”;
}else{echo?“发送邮件失败!”;
}?& gt