php教程 php手册 如何使用PHP通过SMTP发送电子邮件

如何使用PHP通过SMTP发送电子邮件

Jun 21, 2016 am 08:59 AM
headers mail smtp

  由于PHP没有提供现成的smtp函数,却提供了一个功能不甚灵活的mail()函数,这个函数需要服务器配置上的支持,并且不支持smtp验证,在很多场合无法正常的工作,因此不建议使用。本文的目的在于为新手指明方向,并没有涉及那些高级的内容,一来本身水平有限,二来也担心不能准确的讲述相关的概念,进而对各位造成误导,还请自行深入学习。

  “使用php发送mail”最近已经成为继“register_globals”以后本版第二个新手陷阱,今天特地写这篇文章为新手解惑,希望可以为迷茫的人指明方向。

  让我们先从以下这个例子开始说起:

  引用:

[root@server~/]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 server.domain.com.br ESMTP Postfix (2.1.0)
MAIL FROM: teste@dominio.com.br
250 Ok
RCPT TO: teste@dominio.com.br
250 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
teste
.
250 Ok: queued as 7B41F4665A
QUIT
221 Bye
Connection closed by foreign host.

  注:以上来自netkiller的postfix文档,偷懒,直接用现成的。

  首先是使用telnet来连接本地的25端口,稍微熟悉点网络的人都知道smtp协议使用25端口,这也就是说,现在在连接本地的smtp服务器。

  引用:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 server.domain.com.br ESMTP Postfix (2.1.0)

  这些东西是系统输出信息,说明已经连接上了,而且这个smtp服务器是postfix做的。

  “MAIL FROM: teste@dominio.com.br”这个命令指明了发件地址是teste@dominio.com.br,“250 Ok”说明这条命令被服务器接受并正确执行,这类似http协议的200、404、500等状态代码。接下来的“RCPT TO: teste@dominio.com.br”指明了收件地址是teste@dominio.com.br。

  引用:

DATA
354 End data with <CR><LF>.<CR><LF>
teste
.

  这一段是输入邮件正文,输入“DATA”以后系统提示使用“<回车>.<回车>”来结束输入,正文内容是“teste”。

  最后使用“QUIT”退出。

  以上就是最简单的一次发送mail的过程,从这个例子我们可以看出,发送mail其实是很简单的事情,实质上也就是建立一个对smtp服务器的连接,然后发送一些简单的命令给它,一封内容简单的邮件就发送出去了,至于更加复杂内容的邮件或者操作,其实也就是在此基础上稍加扩展而已。

  把这个过程用php来实现,其实就是利用php的Socket functions、Network Functions等等操作socket的函数来和smtp服务器建立一个连接,然后发送文本的命令给服务器,如果你亲自去看看那些写好的利用smtp协议发送邮件的类或者函数,相信可以印证我的说法。

由于已经存在很多现成的封装得很好的类或者函数替我们完成底层的socket级操作,我们只需要直接拿来用就好,而我也不会费时费神的在本文里去讨论底层的代码,有精神去研究的话,自己找代码来研究吧。现在继续跟我走,我们来点实际的代码来说明如何使用php发送邮件,采用的类是PEAR::Mail。

  代码:

<?php
 require_once 'Mail.php';

 $conf['mail'] = array(
   'host' => 'xx.xx.xx.xx', //smtp服务器地址,可以用ip地址或者域名
   'auth' => true, //true表示smtp服务器需要验证,false代码不需要
   'username' => 'tester', //用户名
   'password' => 'retset' //密码
 );

 /***
 * 使用$headers数组,可以定义邮件头的内容,比如使用$headers['Reply-To']可以定义回复地址
 * 通过这种方式,可以很方便的定制待发送邮件的邮件头
 ***/
 $headers['From'] = 'tester@domain.com'; //发信地址
 $headers['To'] = 'tester@domain.com'; //收信地址
 $headers['Subject'] = 'test mail send by php'; //邮件标题
 $mail_object = &Mail::factory('smtp', $conf['mail']);

 $body = <<< MSG //邮件正文
 hello world!!!
 MSG;

 $mail_res = $mail_object->send($headers['To'], $headers, $body); //发送

 if( Mail::isError($mail_res) ){ //检测错误
  die($mail_res->getMessage());
 }
?>


  以上的代码非常的简单,配合注释应该不难看懂,关于PEAR和PEAR::Mail的更多信息,可以自己去翻阅PEAR Manual得到进一步的信息。

  现在你依葫芦画瓢已经可以开始工作了,不过如果你还想做得更好、做得更多的话,我在这里提供一些更多的指南。

  1、SMTP协议

  熟悉并了解SMTP协议的内容,这样你可以进行更多的高级操作,甚至自己写一个满足自己特别需求的发邮件程序。以上的代码虽然简单,但是肯定还是有很多人不了解注释里提到的邮件头是什么东西,它到底对发出的邮件有什么样的影响。

  比如“发送html邮件为什么对方看到的是乱码”等等问题都可能和邮件头相关,如果对smtp协议比较了解的话,可以很快的知道问题所在。

  2、MIME规范

  如果想要发送html邮件甚至多媒体邮件,一定是需要对MIME有一定了解的,有了这方面的知识你就可以发送内容更加精彩的邮件。

  3、PEAR

  PEAR并非唯一的发送邮件的工具,但是PEAR包含了Mail、Mail_Mime等等已经封装好了的类,可以让我们的开发事半功倍,并且除了Mail方面的东西以外,它还提供了很多其他方面的现成的工具,非常值得花时间学一学。



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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP에서 smtp 이메일 기능을 비활성화하는 방법 PHP에서 smtp 이메일 기능을 비활성화하는 방법 Mar 22, 2023 pm 03:22 PM

PHP는 웹 개발 분야에서 널리 사용되는 강력한 프로그래밍 언어입니다. SMTP 이메일 기능도 PHP 개발의 중요한 부분입니다. 그러나 경우에 따라 SMTP 메일 기능을 비활성화할 수 있으며 이 문서에서는 이를 수행하는 방법을 설명합니다.

PHP 메일 사용 가이드: 간단하고 이해하기 쉬운 이메일 전송 튜토리얼 PHP 메일 사용 가이드: 간단하고 이해하기 쉬운 이메일 전송 튜토리얼 Mar 28, 2024 pm 12:12 PM

PHP는 웹 애플리케이션 개발에 널리 사용되는 스크립트 언어로 이메일 전송을 처리하는 데 필요한 다양한 기능을 제공합니다. 이 글에서는 PHP에서 이메일 전송 기능을 사용하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 준비 PHP를 사용하여 이메일을 보내기 전에 먼저 서버가 이메일을 보낼 수 있도록 구성되어 있는지 확인해야 합니다. 일반적으로 이메일을 보내려면 SMTP 서버가 필요합니다. Gmail의 SMTP 등 이메일 제공업체에서 제공하는 SMTP 서버를 사용할 수 있습니다.

PHP를 사용하여 SMTP 프로토콜 기반 이메일 통신을 구현하는 방법 PHP를 사용하여 SMTP 프로토콜 기반 이메일 통신을 구현하는 방법 Jul 30, 2023 pm 04:45 PM

PHP를 사용하여 SMTP 프로토콜을 기반으로 이메일 통신을 구현하는 방법 인터넷의 인기로 인해 이메일은 사람들의 일상 생활과 업무에 없어서는 안될 부분이 되었습니다. PHP에서는 SMTP(SimpleMailTransferProtocol) 프로토콜을 사용하여 이메일을 보내고 받을 수 있습니다. 이 기사에서는 PHP를 사용하여 SMTP 프로토콜 기반 이메일 통신을 구현하는 방법과 관련 코드 예제를 소개합니다. SMTP 클래스 라이브러리를 참조하려면 SMTP 프로토콜을 사용해야 합니다.

Go에서 SMTP를 사용하여 메일을 보내는 방법은 무엇입니까? Go에서 SMTP를 사용하여 메일을 보내는 방법은 무엇입니까? May 11, 2023 pm 05:00 PM

현대 사회의 급속한 발전과 함께 이메일은 사용하기 쉽고 보편적으로 받아들여지는 의사소통 방법이 되었습니다. 점점 더 많은 애플리케이션이 사용자에게 이메일 알림을 보내야 함에 따라 프로그램을 사용하여 이메일을 보내는 것이 중요하고 필요한 작업이 되었습니다. 빠르고 간단하며 동시성이 뛰어난 프로그래밍 언어인 Go 언어는 이메일 전송 기능을 쉽게 구현할 수 있습니다. 이번 글에서는 Go에서 SMTP를 이용하여 메일을 보내는 방법을 소개하겠습니다. SMTP는 이메일 전송에 사용되는 표준 프로토콜입니다. 이동 중

Java에 내장된 메일 API를 사용하여 이메일 전송 기능을 구현하는 방법 Java에 내장된 메일 API를 사용하여 이메일 전송 기능을 구현하는 방법 May 11, 2023 pm 12:49 PM

요구사항: 이메일을 보내려면 jdk 기본 API인 java.mail을 사용하여 이메일 보내기 기능을 구현하세요. 다음 코드는 qq 메일박스를 예로 들어 이메일을 보낼 수 있습니다. importjavax.mail.Message; .mail.MessagingException; importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.Inte

SMTP(Simple Mail Transfer Protocol)를 사용하여 PHP를 사용하여 이메일을 보내는 방법 SMTP(Simple Mail Transfer Protocol)를 사용하여 PHP를 사용하여 이메일을 보내는 방법 May 22, 2023 pm 12:40 PM

인터넷의 발달과 함께 이메일은 사람들이 일상생활에서 의사소통을 하는 중요한 수단 중 하나가 되었습니다. 일부 웹사이트 개발자의 경우 웹사이트에서 이메일을 보내는 것도 특히 중요합니다. 서버측 스크립팅 언어로서 PHP는 당연히 이메일을 보내는 방법을 제공해야 합니다. 이 기사에서는 PHP가 SMTP(Simple Mail Transfer Protocol)를 사용하여 이메일을 보내는 방법을 소개합니다. SMTP 단순 메일 전송 프로토콜(SimpleMailTransferProtocol, 줄여서 SMTP) 소개

SpringBoot 메일 메일 작업을 구성하는 방법 SpringBoot 메일 메일 작업을 구성하는 방법 May 12, 2023 pm 10:37 PM

1. 소개 이메일 전송은 등록 확인, 비밀번호 분실, 사용자에게 마케팅 정보 전송 등 웹사이트의 필수 기능 중 하나여야 합니다. 초기에는 이메일 전송을 위한 관련 코드를 작성하기 위해 JavaMail 관련 API를 사용했습니다. 나중에 spring은 이메일 전송 프로세스를 단순화하여 spring-boot-starter-mail을 캡슐화했습니다. 2. 간단한 사용 1. pom 패키지에 spring-boot-starter-mail 패키지를 추가하여 org.springframework.bootspring을 참조하도록 pom 패키지를 구성합니다.

PHP SMTP 설정: 안정적인 메일 전송을 보장합니다. PHP SMTP 설정: 안정적인 메일 전송을 보장합니다. Sep 19, 2023 pm 12:53 PM

PHPSMTP 설정: 이메일의 안정적인 전송을 보장합니다. 이메일은 비즈니스, 개인 또는 사회 분야에서 필수적인 부분입니다. 정보와 커뮤니케이션은 이메일을 통해 전달되어야 합니다. PHP를 사용하여 웹사이트나 애플리케이션을 작성할 때 이메일을 보내기 위해 SMTP 서버를 사용해야 하는 경우가 많습니다. 이 기사에서는 안정적인 이메일 전송을 보장하기 위해 PHP에서 SMTP를 설정하는 방법을 소개합니다. SMTP란 무엇입니까? SMTP(SimpleMailTransferProtocol)

See all articles