>백엔드 개발 >PHP 튜토리얼 >Gmail_php 팁으로 대량 전송하는 PHPmailer의 일반적인 문제 요약

Gmail_php 팁으로 대량 전송하는 PHPmailer의 일반적인 문제 요약

WBOY
WBOY원래의
2016-05-16 19:58:011310검색

PHPmailer를 사용하여 Gmail로 그룹 이메일을 보낼 때 모든 사람은 많은 일반적인 문제에 직면하게 됩니다. 다음은 귀하의 연구에 도움이 될 몇 가지 일반적인 문제에 대한 요약입니다.

1.인증할 수 없습니다

우선 루프를 사용하지 않는다면 기본적으로 계정이나 비밀번호가 틀렸기 때문입니다.

루프를 사용하여 대량 메시지를 보내는 경우 send() 메서드가 완료된 후 Smtpclose()를 호출하고 한 번 보내고 닫는 것을 잊지 마세요. 그렇지 않으면 이메일을 하나만 보낼 수 있으며 충돌이 발생합니다. 두번째.

2.Gmail

먼저 PHP의 SSL 권한을 활성화하세요

php에서 openssl을 활성화하는 방법 대부분의 경우 openssl을 활성화하려면 다음과 같은 간단한 설정을 수행해야 합니다.

창 아래에서 여는 방법:

1: 먼저 php.ini에 Extension=php_openssl.dll이 있는지 확인합니다. 존재하는 경우 이전 주석 문자 ';'를 제거하고 이 줄이 없으면 Extension=php_openssl.dll을 추가합니다.

2: php 폴더에 있는 php_openssl.dll, ssleay32.dll, libeay32.dll 3개 파일을 WINDOWSsystem32 폴더에 복사합니다.

3: Apache 또는 iis 다시 시작

이 시점에서 openssl 기능이 활성화됩니다.

Linux에서 활성화하는 방법:

저는 Jinshang Data의 클라우드 호스트인 PHP 버전: 5.2.14를 사용하고 있습니다

다음 계획에서는 내 호스트를 예로 들어 PHP에 openssl 모듈 지원을 추가하는 방법을 설명합니다.

인터넷의 일부 답변에서는 PHP를 다시 컴파일하고, 매개변수 구성을 추가하고, 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로 암호화되어 있습니다.

1단계.php openssl 모듈(확장) 지원
2단계.phpmailer 라이브러리 다운로드
Step3. 'class.phpmailer.php', 'class.smtp.php' 코드 변경

1.phpmailer 및 smtp Riga 속성 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>
<&#63;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!";
}
&#63;>
</body>
</html> 

위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.