汇总PHPmailer群发Gmail的常见问题
大家在PHPmailer群发Gmail时会遇到许多常见问题,下面为大家总结了一些常见问题,希望对大家的学习有所帮助。
1.Could not authenticate
首先,如果你没有使用循环的话,基本上就是账号或者密码错了;
如果使用循环来群发,send()方法结束之后记得调用Smtpclose(),发一次关一次,否则就会出现只能发一封邮件,第二次就崩溃的情况。
2.Gmail
首先,开启php的ssl权限
php开启openssl的方法,大多数情况下openssl是没有开启的,要想启用需要进行下简单的设置:
windows下开启方法:
1: 首先检查php.ini中;extension=php_openssl.dll是否存在, 如果存在的话去掉前面的注释符‘;', 如果不存在这行,那么添加extension=php_openssl.dll。
2: 讲php文件夹下的: php_openssl.dll, ssleay32.dll, libeay32.dll 3个文件拷贝到 WINDOWS\system32\ 文件夹下。
3: 重启apache或者iis
至此,openssl功能就开启了。
Linux下开启方法:
我使用的是锦尚数据的云主机,PHP版本:5.2.14
下面方案就以我的主机为例讲解为PHP添加openssl模块支持。
网上一些答案说要重新编译PHP,添加configure参数,增加openssl的支持。这里讲一个不需要重新编译的方法。
如果服务器上存在PHP安装包文件最好,如果已经删除,去下载和phpinfo页面显示版本一样的PHP安装文件,我这里是 php-5.2.14.tar.gz
推荐去搜狐镜像下载,网易镜像没有找到。地址为: http://mirrors.sohu.com/php/
用ssh工具连接到主机。
# 下载到/var/www/php5目录下 cd /var/www/php5 wget http://mirrors.sohu.com/php/php-5.2.14.tar.gz # 解压 tar zxvf php-5.2.14.tar.gz # 进入PHP的openssl扩展模块目录 cd php-5.2.14/ext/openssl/ /var/www/php5/bin/phpize # 这里为你自己的phpize路径,如果找不到,使用whereis phpize查找 # 执行后,发现错误 无法找到config.m4 ,config0.m4就是config.m4。直接重命名 mv config0.m4 config.m4 /var/www/php5/bin/phpize ./configure --with-openssl --with-php-config=/var/www/php5/bin/php-config make make install # 安装完成后,会返回一个.so文件(openssl.so)的目录。在此目录下把openssl.so 文件拷贝到你在php.ini 中指定的 extension_dir 下(在php.ini文件中查找:extension_dir =),我这里的目录是 var/www/php5/lib/php/extensions # 编辑php.ini文件,在文件最后添加 extension=openssl.so # 重启Apache即可 /usr/local/apache2/bin/apachectl restart
好了,现在就成功添加openssl支持。
但是,Gmail麻烦的地方可不止这样,Gmail现在的smtp和pop3都是ssl加密的
Step1. php openssl module(extension) support
Step2. download phpmailer library
Step3. change code 'class.phpmailer.php' and 'class.smtp.php'
1.phpmailer和smtp里加property Is_SSL
public $Is_SSL = false;
2.phpmailer里的SmtpConnect方法里传递给smtp对象
$this->smtp-> Is_SSL = $this-> Is_SSL ;
3.smtp里的Connect方法在fsockopen调用前加上
if($this->is_ssl){ $host = 'ssl://'.$host; }
最后是使用方法,记得调用phpmailer类哦,代码里没有。
$mail = new PHPMailer(); $mail->IsSMTP(); $mail->Host = 'smtp.gmail.com'; // 您的企业邮局域名 $mail->SMTPAuth = true; // turn on SMTP authentication $mail->SMTPSecure = "tls"; $mail->Username = '***@gmail.com'; $mail->Password = '******'; $mail->From = '***'; $mail->FromName = '***'; $mail->CharSet = 'UTF-8'; $mail->Encoding = "base64"; $mail->IsHTML(true); // send as HTML $mail->Subject = '***'; //邮件标题 $mail->Body = '***'; //邮件内容 $mail->AltBody = "text/html"; $mail->AddAddress('***', ""); $mail->Is_SSL = true; $mail->Port = 587; if (!$mail->Send()) { exit($mail->ErrorInfo); } $mail->Smtpclose(); unset($mail);
代码部分就这些,还有不要忘记在gmail中做好相应的设置哦。
以上三步完成,就可以自由的用phpmailer来发送gmail邮件了。
再为大家分享一个phpmailer发送gmail邮件实例:
<html> <head> <title>PHPMailer - SMTP (Gmail) basic test</title> </head> <body> <?php //error_reporting(E_ALL); error_reporting(E_STRICT); date_default_timezone_set('America/Toronto'); require_once('../class.phpmailer.php'); //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded $mail = new PHPMailer(); $body = file_get_contents('contents.html'); $body = eregi_replace("[\]",'',$body); $mail->IsSMTP(); // telling the class to use SMTP $mail->Host = "mail.gmail.com"; // SMTP server $mail->SMTPDebug = 2; // enables SMTP debug information (for testing) // 1 = errors and messages // 2 = messages only $mail->SMTPAuth = true; // enable SMTP authentication $mail->SMTPSecure = "ssl"; // sets the prefix to the servier $mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server $mail->Port = 465; // set the SMTP port for the GMAIL server $mail->Username = "***@gmail.com"; // GMAIL username $mail->Password = "***"; // GMAIL password $mail->SetFrom('****@gmail.com', 'First Last'); $mail->AddReplyTo("***@gmail.com","First Last"); $mail->Subject = "PHPMailer Test Subject via smtp (Gmail), basic"; $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test $mail->MsgHTML($body); $address = "***@gmail.com"; $mail->AddAddress($address, "John Doe"); $mail->AddAttachment("images/phpmailer.gif"); // attachment $mail->AddAttachment("images/phpmailer_mini.gif"); // attachment if(!$mail->Send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message sent!"; } ?> </body> </html>
以上就是本文的全部内容,希望对大家的学习有所帮助。
相关文章
- //原创:www.111cn.net 注明:转载说明来处www.111cn.net // 昨天听一网友说用php 里面的mail发邮件发不出去,我想一般都是发不了的,现在大多数据邮件提供商都不准那样了...2016-11-25
解决PHPMailer错误SMTP Error: Could not connect to SMTP host的办法
PHPMailer发邮件时提示SMTP Error: Could not connect to SMTP host错误是smtp服务器的问题我们一起来看看关于SMTP Error: Could not connect to SMTP host问题的解...2016-11-25phpmailer发送邮件 SMTP Error: Could not authenticate 错误
今天在使用phpmailer发送邮件时居然提示SMTP Error: Could not authenticate,这个感觉是smtp设置的问题,下面我在网上找到了几种解决办法。 今天在使用phpmailer发...2016-11-25- header("Content-type:text/html;charset=utf-8"); include('phpmailer/class.phpmailer.php'); include('phpmailer/class.smtp.php'); $mail = new PHPMailer();...2016-11-25
phpmailer邮件发送实例(163邮箱 126邮箱 yahoo邮箱)
phpmailer是一个非常优秀的php邮箱发送插件了,他可以几乎实现任何邮箱登录发送,下面我介绍163邮箱 126邮箱 yahoo邮箱的发送方法。 准备工作: 我们必须注册一个邮...2016-11-25- 我们利用 phpmailer功能实现 邮件发送功能哦,这里还利用了模板呢,就是读取指定文件内容再发送给朋友。 <?php @session_start(); include(dirname(__FILE__).'....2016-11-25
- PHPMailer发送邮件现在php开发者比较常用的一个邮件发送组件了,利用它我们几乎不需要考虑任何问题,只要简单的把代码放网上把邮箱用户名密码与stmp改一下就可以发邮件了...2016-11-25
- 在php中发邮件会用到mail函数 ,但是大多数情情况mail函数是不可用的,我们有插件来实例了phpmailer来实现发送邮件。 代码如下 复制代码 requi...2016-11-25
- html代码 <form action="lead_mail_send.php" method="Post" enctype="multipart/form-data" name="myfm"> <table width="80%" border="0" align="center" cellspa...2016-11-25
- phpmailer发送邮件是php开发者首选的一个邮件发送插件了,下面我来介绍怎么集成phpmailer到thinkphp框架了,有需要了解的朋友可参考。 phpmailer发送邮件功能很强...2016-11-25
- phpmailer多邮件发送 require("class.phpmailer.php"); $mail = new PHPMailer(); $mail->From = "list@mydomain.com"; $mail->FromName = "List manager"; $ma...2016-11-25
- 本款邮件发送功能我们是用了国外一个开源码的邮件类,大家都可能用过的PHPMailer邮件类很简单,今天来讲一下简单的使用教程,有需要的朋友可以参考下,同时像其它的附件什么...2016-11-25
- 首先,先到http://phpmailer.sourceforge.net/这个地址去下载最新的PHPMailer的包(PHPMailer方法必须使用这个包)。 下载完成后解压到相应的目录。可以看到解压后的...2016-11-25
- 本文章介绍了关于在thinkphp中利用了phpmailer来实现邮件发送的详细教程,有需要的朋友可以参考一下。 本文所使用的是ThinkPHP 2.1版和 PHPMailer 5.1版。(后者建议...2016-11-25
- 小编推荐的这篇文章介绍了使用PHPMailer发送邮件实例,非常实用,有兴趣的同学快来看看吧。 PHPMailer类源代码下载地址:https://github.com/PHPMailer/PHPMailerhttps...2017-07-06
- 本文章总结了关于在phpmailer发送邮件时出现的中文乱码与标题中文乱码解决方法总结,有需要的朋友可参考本文章。 一个客户的PHP网站需要一个邮件订阅功能,我采用一...2016-11-25
- PHPMailer是一个邮件发送插件了,我们可以把PHPMailer安装包解压到Vendor目录中之后然后简单的配置就可以发邮件了,下面来看一个例子. 最近一直在用ThinkPHP框架开发...2016-11-25
- 可能使用了PHPMailer发送邮件的朋友带中文附件名时会出现乱码,下面我来介绍一个解决办法。 比如我们要发送的附件是“测试.txt”,如果在添加附件的时候强...2016-11-25
- 代码如下 复制代码 function smtp_mail ($sendto_email,$subject,$body) { global $mailconfig,$_cfg; $mail = new phpmailer(); $mail->i...2016-11-25
- 本文章详细的介绍了关于phpmailer邮箱发送插件中文说明,有需要的朋友可以参考一下,phpmailer是一款强大的邮件发送功能。 $AltBody–属性 出自:PHPMailer::$A...2016-11-25