ホームページ  >  記事  >  バックエンド開発  >  PHP を使用してメールを送信する

PHP を使用してメールを送信する

PHPz
PHPzオリジナル
2023-06-11 08:46:441741ブラウズ

インターネットと電子メールの普及に伴い、電子メールを主要なコミュニケーション ツールとして使用する人が増えています。 PHP は、電子メールの送信にも使用できる人気のあるサーバー側プログラミング言語です。この記事では、PHPを使用してメールを送信する方法を説明します。

  1. SMTP サーバーの構成

まず、SMTP サーバーを構成する必要があります。 SMTP (Simple Mail Transfer Protocol) は、電子メール送信の標準プロトコルです。ほとんどの電子メール サービス プロバイダーは、SMTP サーバーのセットアップ情報を提供します。 PHPではメールを送信するためにSMTPサーバーを使用する必要があるため、SMTPサーバーのアドレス、ポート番号、ユーザー名、パスワードなどのSMTPサーバーの設定情報をコード内で設定する必要があります。

以下は Gmail SMTP サーバーの使用例です:

<?php
// 配置SMTP服务器
$smtp_server = 'smtp.gmail.com';
$smtp_port = 587;
$smtp_username = '你的Gmail账号';
$smtp_password = '你的Gmail密码';

// 创建SMTP客户端
$smtp_client = new SMTPClient($smtp_server, $smtp_port, $smtp_username, $smtp_password);

// 发送邮件
$smtp_client->sendMail('发件人邮箱', '收件人邮箱', '邮件标题', '邮件内容');
?>
  1. SMTP クライアントの作成

PHP では、接続するには SMTP クライアントを使用する必要があります。 SMTPサーバーに接続してメールを送信します。 SMTP クライアントの例を次に示します。

class SMTPClient {
  private $smtp_server;
  private $smtp_port;
  private $smtp_username;
  private $smtp_password;
  private $smtp_conn;

  public function __construct($smtp_server, $smtp_port, $smtp_username, $smtp_password) {
    $this->smtp_server = $smtp_server;
    $this->smtp_port = $smtp_port;
    $this->smtp_username = $smtp_username;
    $this->smtp_password = $smtp_password;

    // 连接SMTP服务器
    $this->smtp_conn = fsockopen($this->smtp_server, $this->smtp_port, $errno, $errstr, 30);

    if (!$this->smtp_conn) {
      throw new Exception("无法连接SMTP服务器: $errstr ($errno)");
    }

    // 连接成功后发送命令
    $this->sendCommand('EHLO localhost', 250);
    $this->sendCommand("AUTH LOGIN", 334);
    $this->sendCommand(base64_encode($this->smtp_username), 334);
    $this->sendCommand(base64_encode($this->smtp_password), 235);
  }

  // 发送邮件函数
  public function sendMail($from, $to, $subject, $body) {
    // 发送邮件头部
    $this->sendCommand("MAIL FROM: <$from>", 250);
    $this->sendCommand("RCPT TO: <$to>", 250);
    $this->sendCommand("DATA", 354);

    // 发送邮件内容
    fputs($this->smtp_conn, "Subject: $subject
");
    fputs($this->smtp_conn, "From: $from
");
    fputs($this->smtp_conn, "To: $to
");
    fputs($this->smtp_conn, "
");
    fputs($this->smtp_conn, "$body
");
    fputs($this->smtp_conn, ".
");

    // 发送结束命令
    $this->sendCommand("QUIT", 221);
  }

  // 发送SMTP命令
  private function sendCommand($command, $expected_response) {
    fputs($this->smtp_conn, "$command
");

    // Read response
    while(true) {
      $response = fgets($this->smtp_conn, 4096);
      if(substr($response, 3, 1) == " ") { break; }
    }

    if((int)substr($response, 0, 3) !== $expected_response) {
      throw new Exception("SMTP命令错误: " . $response);
    }
  }

  public function __destruct() {
    fclose($this->smtp_conn);
  }
}
  1. 電子メールの送信

SMTP クライアントを使用した電子メールの送信は非常に簡単です。 SMTP クライアントの sendMail 関数を呼び出し、送信者の電子メール アドレス、受信者の電子メール アドレス、電子メールのタイトル、電子メールの内容を渡すだけです。

$smtp_client->sendMail('发件人邮箱', '收件人邮箱', '邮件标题', '邮件内容');

これで、PHP を使用して電子メールを送信できるようになりました。もちろん、これは単なる基本的な例であり、実際のアプリケーションでは、添付ファイルの追加、HTML 電子メールの送信など、より複雑なロジックが必要になる場合があります。

概要

この記事では、PHP を使用してメールを送信する方法を紹介しました。 PHP を使用して電子メールを送信するには、まず SMTP サーバー情報を構成し、次に SMTP クライアントを使用して SMTP サーバーに接続し、電子メールを送信する必要があります。この記事が、PHP でのメール送信の基本をより深く理解するのに役立つことを願っています。

以上がPHP を使用してメールを送信するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。