PHP study notes 1: Who touched your mail(), PHP?_PHP Tutorial
When writing a function for sending emails in PHP, a very strange problem will occur, that is:
Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in .......
Of course, this red is not displayed on the web page, it is just for illustration, but you can set the displayed color. Well, this is left to you to consider.
I searched for relevant answers through the Internet, including related technical blogs, and everyone explained the solution very simply. Most of them just mentioned modifying the [mail function] function in php.ini to open the related functions of SMTP. That’s it, here are the detailed modifications:
[mail function]
SMTP = localhost
smtp_port = 25
sendmail_from = youremailUsual@domin.com
;It is necessary to note here that this email is from the From side.
sendmail_path = ""
;It is empty at first, and will be explained later.
mail_add_x_header = on
;This is on by default, no need to change
At this point, after the modification is completed, restart apache. Of course, I did this operation under CMD. Speaking of this operation, I also made a little joke. How stupid i am!
After restarting, refresh the page and the error still exists.
I'm stuck here. IIS (default server for Windows) was mentioned in stackoverflow. I can't find this item under Control Panel - Administrative Tools. Because it's win7, I turned it on under Add and Remove Programs. Yes, pay attention to the operation. You can find it under the management tool later. Double-click to open it. At this time, you are very excited to see the SMTP item. Double-click to open it and configure the relevant parameters, as shown in the screenshot:
Correction: I forgot to repost the picture here, so I apologize! Correction No. 7-5.
To be honest, this step was a bit stupid. The above are the options for ASP.net, don’t worry about PHP. [It didn’t work anyway].
After learning from the painful experience, I checked Wikipedia for a detailed explanation of the SMTP protocol. Click Here: Simple Mail Protocol
Come back and continue to modify, [mail function], as follows:
; Take the setting of 126 mailbox as an example
SMTP = smtp.126.com
smtp_port = 25
sendmail_from = my126EmailAddress@126.com
sendmail_path = ""
mail_add_x_header = on
At the same time, the value of the $from variable in the program was modified to maintain consistency.
[Because of the previous test, the phpinfo() function was added to the program. After execution, search for the mail item on the page, and you will find that there will be a Localhost Value and a master Value. Of course, this is easy to understand. The Localhost Value refers to the value in your program. The set value, master Value is the setting of php.ini]
After execution, the magical error disappeared, but the following error occurred:
mail(): SMTP server response: 553 You are not authorized to send mail, authentication is required aaf353e4-8ac5-416e-9cd5-6b54fc592764
Afterwards, I changed other email addresses, such as QQ, Gamil, etc., and the errors were as shown above. After reading a familiar word authorized, I understood what it meant.
It seems that we are not far from success at this step. I remember that when I used the client to configure mailbox users, the last step would ask you whether you need to turn on "server authentication". Finally, I accidentally found a file package called sendmail. Download it. The address is as follows: sendmail
After that, it is best to create a new folder in the root directory of PHP and name it: sendmail, then put the compressed package in it, unzip it, and modify a file called sendmail.ini. The modifications are as follows:
;take the fomus email provider in China 126 for example
[sendmail]
smtp_server= smtp.126.com
smtp_port=25
default_domin =126.com
auth_username= strings in your email address before char '@'
auth_password= your password which allow you to login in your email-box
hostname= 126.com
After that, you have to modify php.ini, still in the same place:
SMTP = smtp.126.com
;The same is true if it is changed to localhost here, and other options remain unchanged.
smtp_port = 25
sendmail_from = my126EmailAddress@126.com
sendmail_path = "your sendmail path/sendemail.exe -t "
;Of course the first half of this path must include the root directory of your PHP installation. Replace "" with "/", I think it is a must.
mail_add_x_header = on
Now that the configuration is complete, restart your apache, refresh the page, and the error will disappear, because the $to set in the program is your own 126 and QQ mailbox, and of course it will be sent cyclically.
When I saw the Sanfeng email prompt popping up on QQ in the lower right corner of the desktop, I know that I resolve it. The content of the opened email was exactly the same as what I entered on the page, and some of the content was read from the local database. .
Author: Tian Haoyu

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



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

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

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

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

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,

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

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 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.
