>백엔드 개발 >PHP 튜토리얼 >PHP 이메일을 보내는 두 가지 방법

PHP 이메일을 보내는 두 가지 방법

小云云
小云云원래의
2018-05-14 16:19:5435020검색

많은 프로그래머들이 PHP를 사용하여 이메일을 보낼 때 여러 가지 문제에 직면하게 됩니다. 문제가 발생하면 이를 해결할 수 있는 아이디어가 있어야 합니다. 이 기사는 PHP로 이메일 보내기를 구현하는 아이디어를 바탕으로 작성된 기사입니다. 다양한 문제가 발생할 때 제공되는 다양한 솔루션을 참조할 수 있습니다.

1. PHP에 내장된 mail() 함수를 사용하세요

<?php 
$to = "test@163.com"; //收件人 
$subject = "Test"; //主题 
$message = "This is a test mail!"; //正文 
mail($to,$subject,$message);

결과는 다음과 같이 직접 보고되는 오류입니다.

경고: mail() [function.mail]: Failed to "localhost" 포트 25에서 메일 서버에 연결하고 "SMTP" 및 "smtp_port"를 확인하세요. php.ini에서 설정하거나 온라인에서 ini_set() inD:/www/Zend/email/email.php를 사용하십시오. 10

분석 이유: 로컬 SMTP 서버가 필요하며 코드가 변경되었습니다:

<?php 
$to = "test@163.com";//收件人 
$subject = "Test";//邮件主题 
$message = "This is a test mail!";//邮件正文 
ini_set(&#39;SMTP&#39;,&#39;smtp.163.com&#39;);//发件SMTP服务器 
ini_set(&#39;smtp_port&#39;,25);//发件SMTP服务器端口 
ini_set(&#39;sendmail_from&#39;,"admin@163.com");//发件人邮箱 
mail($to,$subject,$message);

결과가 여전히 잘못되었습니다:

경고: mail() [function.mail]: SMTP 서버 응답: 553 인증이 필요합니다. smtp2,DNGowKD7v5BTDo9NnplVBA--.1171S2 1301220947 inD:/www/Zend/email/email.php 온라인 9

분석사유 : 검증정보가 필요한데 검증정보는 어떻게 작성하나요? 어디서 구성하나요? 이러한 질문에 대한 일부 기술 기사를 참조한 후 이메일을 보내기 위해 mail() 함수를 사용하려면 SMTP 인증 없이 편지를 보낼 수 있는 메일 서버가 필요하다는 결론에 도달했습니다. 하지만 오늘날의 SMTP 메일 서버는 기본적으로 인증이 필요하므로 이를 사용하여 이메일을 보내려면 인증이 필요하지 않은 로컬 SMTP 서버만 설정하면 됩니다. 설정 방법: Windows와 함께 제공되는 IIS를 사용하거나 인터넷에서 다른 SMTP 서버 소프트웨어를 다운로드하세요.

결론: mail() 함수를 사용하여 이메일을 보내려면 인증이 필요하지 않은 SMTP 서버가 있어야 합니다. 이 경우 구성 작업이 조금 더 늘어나지만 몇 줄의 코드만으로 사용하기가 더 쉬워집니다.

2. SMTP 프로토콜을 캡슐화하는 메일 클래스를 사용하세요

이 방법은 특히 서버가 없고 인터넷에서 가상 호스트를 구입하는 대부분의 학생들에게 비현실적입니다. 여전히 SMTP 프로토콜 자체를 사용합니다.

하지만 이 작업을 완료하려면 SMTP 프로토콜에 대해 어느 정도 이해해야 합니다. 모든 작업을 스스로 수행하는 것을 좋아하는 학생은 직접 작성할 수 있고, 이를 자신의 것처럼 사용하려는 학생은 인터넷에서 다운로드할 수 있습니다. .

그러나 PEAR 확장의 Mail 클래스를 사용하는 것이 좋습니다. 일반 텍스트 및 HTML 형식의 이메일을 지원할 수 있으며, 올바른 구성으로 인해 중국어 문자가 깨질 수 없습니다. 첨부 파일 등을 지원할 수 있습니다.

서버에서 pear install Mail을 사용할 수 있습니다. 명령은 설치가 빠릅니다. 충분한 서버 권한이 없는 학생도 수업의 PHP 소스 코드를 직접 다운로드하여 포함시킬 수 있습니다.

참고: 메일 클래스는 Net/SMTP.php 및 Mail/mime.php에 따라 다릅니다. , 함께 다운로드되어 사용 시 함께 포함됩니다.

Mail 클래스에서 이메일을 보내는 방법에 대한 예를 들어 보겠습니다. 인터넷의 다른 SMTP 메일 클래스 사용법도 비슷합니다.

<?php 
// Pear Mail 扩展 
require_once(&#39;Mail.php&#39;); 
require_once(&#39;Mail/mime.php&#39;); 
require_once(&#39;Net/SMTP.php&#39;); 
   
$smtpinfo = array(); 
$smtpinfo["host"] = "smtp.163.com";//SMTP服务器 
$smtpinfo["port"] = "25"; //SMTP服务器端口 
$smtpinfo["username"] = "username@163.com"; //发件人邮箱 
$smtpinfo["password"] = "password";//发件人邮箱密码 
$smtpinfo["timeout"] = 10;//网络超时时间,秒 
$smtpinfo["auth"] = true;//登录验证 
//$smtpinfo["debug"] = true;//调试模式 
// 收件人列表 
$mailAddr = array(&#39;receiver@163.com&#39;); 
// 发件人显示信息 
$from = "Name <username@163.com>"; 
// 收件人显示信息 
$to = implode(&#39;,&#39;,$mailAddr); 
// 邮件标题 
$subject = "这是一封测试邮件"; 
// 邮件正文 
$content = "<h3>随便写点什么</h3>"; 
// 邮件正文类型,格式和编码 
$contentType = "text/html; charset=utf-8"; 
//换行符号 Linux: \n Windows: \r\n 
$crlf = "\n"; 
$mime = new Mail_mime($crlf); 
$mime->setHTMLBody($content); 
$param[&#39;text_charset&#39;] = &#39;utf-8&#39;; 
$param[&#39;html_charset&#39;] = &#39;utf-8&#39;; 
$param[&#39;head_charset&#39;] = &#39;utf-8&#39;; 
$body = $mime->get($param);  
$headers = array(); 
$headers["From"] = $from; 
$headers["To"] = $to; 
$headers["Subject"] = $subject; 
$headers["Content-Type"] = $contentType; 
$headers = $mime->headers($headers);  
$smtp =& Mail::factory("smtp", $smtpinfo); 
$mail = $smtp->send($mailAddr, $headers, $body); 
$smtp->disconnect(); 
if (PEAR::isError($mail)) { 
  //发送失败 
  echo &#39;Email sending failed: &#39; . $mail->getMessage()."\n"; 
} 
else{ 
  //发送成功 
  echo "success!\n"; 
}

인터넷에서 SMTP 클래스를 찾으면 고도로 캡슐화되어 있으므로 사용하기가 더 쉽습니다. 위의 내용은 더 간단하지만 사용 방법은 비교적 유사합니다.

결론: 이 방법으로 이메일을 보내려면 소프트웨어를 설치할 필요가 없습니다. PHP 클래스를 포함하고 구성 코드 몇 줄만 더 작성하면 됩니다. 그리고 인터넷에 많은 예제 코드가 있는데, 대부분의 경우 이를 복사하고 몇 가지 매개변수만 수정하면 사용하기 때문에 매우 편리하며 이 방법을 사용하는 것이 좋습니다.

어떤 종류의 문제가 발생하더라도 가장 중요한 것은 문제를 해결할 수 있는 아이디어를 갖는 것입니다. 이 기사가 모든 사람에게 영감을 줄 수 있기를 바랍니다.

관련 추천:

강력한 PHP 이메일 수업

간단한 PHP 이메일 수업

PHP 이메일 문제

위 내용은 PHP 이메일을 보내는 두 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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