ホームページ 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 マニュアルを参照してください。

これで、通常どおり作業を開始できますが、さらに改善してさらに作業を進めたい場合は、さらにいくつかのガイドラインを提供します。

1. SMTP プロトコル

SMTP プロトコルの内容に精通し、理解しているため、より高度な操作を実行したり、独自の特別なニーズを満たす電子メール プログラムを作成したりすることもできます。上記のコードは単純ですが、コメントに記載されているメールヘッダーが何なのか、送信メールにどのような影響を与えるのかが分からない人も多いはずです。

「HTML メールを送信すると相手に文字化けが発生するのはなぜですか?」などの問題は、SMTP プロトコルをよく理解していれば、すぐに問題を知ることができます。 。

2. MIME 仕様

HTML メールやマルチメディア メールを送信したい場合は、MIME についてある程度の知識が必要です。この知識があれば、より魅力的なコンテンツ メールを送信できます。

3. PEAR

PEAR は電子メールを送信するための唯一のツールではありませんが、PEAR には Mail、Mail_Mime、その他のカプセル化されたクラスが含まれており、開発をより効率的にすることができます。この分野のものに加えて、他の多くの既製ツールも提供されており、時間をかけて学ぶ価値があります。



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPでSMTPメール機能を無効にする方法 PHPでSMTPメール機能を無効にする方法 Mar 22, 2023 pm 03:22 PM

PHP は Web 開発の分野で広く使用されている強力なプログラミング言語であり、SMTP 電子メール機能も PHP 開発の重要な部分です。ただし、場合によっては SMTP メール機能を無効にする必要がある場合があり、この記事ではその方法について説明します。

PHPメール活用ガイド シンプルでわかりやすいメール送信チュートリアル PHPメール活用ガイド シンプルでわかりやすいメール送信チュートリアル Mar 28, 2024 pm 12:12 PM

PHP は、Web アプリケーションの開発に広く使用されているスクリプト言語であり、電子メール送信を処理するための多くの機能を提供します。この記事では、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 メールボックスを例として電子メールを送信できます。 mail.MessagingException; importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.Inte

PHP を使用して Simple Mail Transfer Protocol (SMTP) を使用して電子メールを送信する方法 PHP を使用して Simple Mail Transfer Protocol (SMTP) を使用して電子メールを送信する方法 May 22, 2023 pm 12:40 PM

インターネットの発展に伴い、電子メールは人々が日常生活でコミュニケーションを図るための重要な方法の 1 つになりました。一部の Web サイト開発者にとって、Web サイトでの電子メールの送信も特に重要です。 PHP はサーバー側スクリプト言語として、当然のことながら電子メールを送信する方法を提供する必要があります。この記事では、PHP が SMTP (Simple Mail Transfer Protocol) を使用して電子メールを送信する方法を紹介します。 SMTP の概要 Simple Mail Transfer Protocol (SimpleMailTransferProtocol、略して SMTP) は、次の目的で使用されます。

SpringBoot Mailメールタスクを構成する方法 SpringBoot Mailメールタスクを構成する方法 May 12, 2023 pm 10:37 PM

1. はじめに 電子メールの送信は、登録の確認、パスワードの忘れ、またはユーザーへのマーケティング情報の送信など、Web サイトの重要な機能の 1 つです。初期の頃は、JavaMail 関連の API を使用して電子メール送信に関連するコードを記述していましたが、その後、Spring は JavaMailSender から撤退し、電子メール送信プロセスが簡素化されました。その後、springboot がこれをカプセル化し、現在は spring-boot-starter-mail です。 2. 簡単な使用法 1. spring-boot-starter-mail パッケージを pom パッケージに追加して、org.springframework.bootspring- を参照するように pom パッケージを構成します。

PHP SMTP 設定: メールの信頼性の高い送信を確保します。 PHP SMTP 設定: メールの信頼性の高い送信を確保します。 Sep 19, 2023 pm 12:53 PM

PHPSMTP 設定: 電子メールの信頼性の高い送信を確保します。電子メールは現代のコミュニケーションに不可欠な部分です。ビジネス、個人、社交の分野を問わず、情報とコミュニケーションは電子メールを通じて配信される必要があります。 PHP を使用して Web サイトやアプリケーションを作成する場合、多くの場合、電子メールを送信するために SMTP サーバーを使用する必要があります。この記事では、メールを確実に送信するために PHP で SMTP を設定する方法を紹介します。 SMTPとは何ですか? SMTP (SimpleMailTransferProtocol)

See all articles