Home Backend Development PHP Tutorial Detailed explanation of the usage of mail() function in PHP and the working principle of SMTP

Detailed explanation of the usage of mail() function in PHP and the working principle of SMTP

Jun 27, 2017 am 10:31 AM
mail php smtp

A script that sends E-MAIL is perhaps one of the most common scripts you can find on a Web site. Although it is simple, an email script can sometimes make programmers very frustrated. There is a script in PHP called mail () function, it only needs to know the recipient's address and the body of the letter to send mail, but to make mail() run as you want, you still need to solve some thorny problems.

To make mail () works, you must have an SMTP server so that PHP can connect to it. No matter how important this server is to the mail program, most people don't have the slightest idea how it works. In this tutorial, we will reveal the secrets of SMTP and Solve some common problems with sending emails using PHP. Other topics in this article will include ways to loop through an address list and send an email to a recipient in both text and HTML formats.

SMTP is the abbreviation of Simple Mail Transfer Protocol (Simple Mail Transfer Protocol), and an SMTP server is a computer that runs this protocol and sends out emails. Running this protocol actually refers to running programs such as Sendmail and Qmail Program - If you are using a non-Windows computer. On the Windows platform, the SMTP service program that is part of the Windows NT ServicePack or built into Windows 2000 is a typical such program.

I'm not saying those are the only SMTP packages, but they are the most common. If your website uses part of an Internet Service Provider's virtual hosting package, then the SMTP server should already be there. is installed on this computer. If you are the system administrator of a computer at an ISP or indoors, then you most likely have some kind of SMTP software installed on this computer. Handles the process of sending email from a Web server.

However, if you are an individual user and only have a development Web server program running on your PC, you may not have SMTP running on your machine. Software. Here is a very simple but accurate rule of thumb: If you are a Windows user and never see the words SMTP server, then you are not running the program. If you are not, then you have two options: Install , configure, and maintain an SMTP server program (this method is not recommended if you don’t know what it is) or use an existing SMTP server.

 "If a server now How can I use it if it's not running?" you may ask. If your computer is connected to the Internet via a dial-up connection (or DSL or cable), you can use your ISP's outgoing mail server. For example, If your development computer is a Windows 98 system and uses a 56kbps modem to connect to the Internet via EarthLink, then you can use mail.earthlink.net as your SMTP server. No matter what mail you use for your outgoing mail server Clients (Eudora, Outlook, NetscapeMail, etc.), they will all use the same process as your

PHP codeusing your SMTP server. The trick is to make PHP know a little bit of the truth.

In the php.ini management

Configuration file, there are several entries that need to be set so that the mail() function can run properly. Before changing them, find out what they are used for. You can use# The ##phpinfo() function displays the current configuration of the system by creating a file. This file includes: Save this file, place it in the file root directory of your Web service program, and then Access it through your browser. You should see a nicely formatted message showing your configuration. The entries you want to view are:

SMTP

sendmail_from

Sendmail_path

If you are not using Windows, then the sendmail_path command is the only thing you have to worry about. If you are using Windows, you need to take a look at the last two commands.

If you are using Linux or a Unix variant, sendmail_path should look like this:

sendmail_path = /usr/sbin/sendmail

Or if you are using Qmail:

Sendmail_path = /var/qmail/bin/sendmail

In this command, you can also set configuration parameters to indicate queue buffering options or explicitly set the Return-Path header, as shown below:

Sendmail_path = /usr/sbin/sendmail -t-fyou@yourdomain.com

As a non-Windows user, this is all you have to do. If you are using Windows, You have more things to do. You also need to take a look at the SMTP and sendmail_from values. Don't be confused by the sendmail in the name of the sendmail_from command. Although you are not using a program named Sendmail on Windows, that is just the command The name. Don’t be scared by it.

In the results displayed by your phpinfo(), look at the default values ​​of SMTP and sendmail_from - they are either blank or contain random values. You should change them to meaningful values.

If you are determined to run an SMTP service program on this computer, your entries in the php.ini file should be as follows:

SMTP = localhost

However, if you To use your ISP's (EarthLink in this case) outgoing mail server, the email in php.ini should look like this:

SMTP = mail.earthlink.net

You It is also possible to use an IP address instead of a domain name, since computers do not distinguish between the two entries.

The second configuration directive is sendmail_from, which should be set to the email address in the From header. It can be used in the script Modified but usually used as the default. Here is an example of this configuration directive youraddress@yourdomain.com refers to your own email address.

Sendmail_from =youraddress@yourdomain.com

After making these configuration changes, restart the web server and use the phpinfo() function to verify the changes. After these tasks are completed, you can use PHP to send emails.

 mail( ) function is very simple: only five parameters, two of which are optional. These parameters are:

Receiver address

Subject

Contents of the message

Other file information headers (optional)

Other configuration options for the SMTP service program (optional)

Additional header parameters control functions such as CC, BCC, Reply- To mail function, or other functions that follow the SMTP protocol. In this example, I only use the From and Reply-To headers.

If you want to send me an email but you are using a For non-Windows systems, the program code should be as follows:

   $to= "julie@thickbook.com";
  $subject = "ZDNet Developer article";
  $msg = "I completely understand SMTP servers now!";
  $headers = "From:me@mycompany.comnReply-To:someoneelse@mycompany.com";
  $config = "-fwebmaster@mycompany.com";
  mail("$to", "$subject", "$msg", "$headers", "$config");
  echo "finished!";
Copy after login

If you are using a Windows-based SMTP service, then you may not need to use the fifth parameter, and in the append In the header information parameters (that is, the fourth parameter), you need to write them separately - use rn instead of n. Therefore, the code for the same email sent through the Windows-based SMTP service is as follows:  

   $to = "julie@thickbook.com";
  $subject = "ZDNet Developer article";
  $msg = "I completely understand SMTP servers now!";
  $headers = "From:me@mycompany.comrnReply-To:someoneelse@mycompany.com";
  mail("$to", "$subject", "$msg", "$headers");
  echo "finished!";
Copy after login

The echo statement in the script causes your web browser to display a message to you when the script completes. If you do not write the echo statement, you will get an "empty file" dialog box. Because no output can be sent to the browser.

The mail() function will return true as long as it can connect to the specified SMTP server. But this does not mean that the email successfully reached the recipient. The mail() function does not wait for or report success/error codes from the SMTP server.

The mail() function may return a false value and then give you a warning of "Unable to connect at line x" or "Unknown error at line x." If either of these two messages appears, you should check the SMTP value in php.ini. There are two possibilities for causing these messages: the SMTP server is down, or PHP Unable to connect to it. In either case, your email cannot be sent.

This script uses hard-coded values ​​for these parameters. Use a simple HTML form, you can insert some values ​​into these parameters and have a nice feedback form.

The above is the detailed content of Detailed explanation of the usage of mail() function in PHP and the working principle of SMTP. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

7 PHP Functions I Regret I Didn't Know Before 7 PHP Functions I Regret I Didn't Know Before Nov 13, 2024 am 09:42 AM

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? Apr 03, 2025 am 12:03 AM

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

See all articles