The sane PHPMailer instruction “Sending message and files to the mail”
Unfortunately, PHPMailer is the only easy way to send messages to your email with attachments.
1. Download PHPMailer
Go to https://github.com/PHPMailer/PHPMailer and download the latest version.
We only need 3 files from the archive:
Anything else that is stored in archive is f*cking unnecessary, you can delete it.
2. Remove all junk from files
You can skip this item. It is not required.
Files written by PHPMailer developers contain an unmeasured amount of junk consisting of only comments (why?!). The weight of these three files together with the comments is 208kb, after deleting the comments the weight is 77kb. Almost in 3 times…
I suggest deleting all comments in files with some “PHP minifier”. You can use any one, I got (first hit) http://php-minify.com.
- Open the PHPMailer.php file
- Copy the content of the file
- Insert in the form on the site php-minify and click “Minify”.
- Save the result in a new file with the same name
The procedure is repeated with all three files.
For clarity, the file Exception.php
3. Move files to the project
Put these 3 files into our project. I created a folder called phpmailer specially for these files.
4. Create a configuration file
Let’s create a file send.php with the following content
Here you need to edit these fields for yourself:
// Mail creation
$title = “Mail Header”;
$body = “message";// Settings PHPMailer
$mail->Host = ‘smtp.gmail.com’; // SMTP server
$mail->Username = ‘your_login’; // Login your email
$mail->Password = ‘password’; // Password your email
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
// Mail address itself and sender's name
$mail->setFrom('firstname.lastname@example.org', 'Sender is name'); // Receiver of mail
Save this file send.php and place it at the root of the site.
The example shows the settings for Gmail. You can use any mail for sending. For SMTP settings for other mail services see their documentation.
5. Create an HTML form
Now put this form in the right place on your website.
Pay attention to onsubmit. The second argument should be the file name, that is send.php.
Now you just need to place this function somewhere in your code. You can copy it to your script file, which is already attached to <head>, or paste it after the closing tag </body>.
7. END (almost)
Your form should look like this.
And in case of success (or failure) you should receive a pop-up message from your browser, saying “Message sent” or “Error…”.
8. Why the error?
This is a very common question, where I can say with full confidence: 60% of the reasons for errors is your hosting, 30% is your mail, 9% is you misspelled the data from your mail, and 1% of the reasons are you a f*cking jerk who decided to change the code, and then you start to wonder sincerely why nothing works.
To find out what the reason is, you need to comment on this line of code (remove //):
//$mail->SMTPDebug = 2
Now in your browser you need to open the console (F12) > tab “console” and send a message. You should have a new line (list) to open:
If these lines are like hieroglyphs for you and you are sure that there is no error in writing your mail data, then you send two mails: one in technical support of your hosting, the other in technical support of your mail with such content:
Hi. Trying to configure PHPMailer, but I have an error in my logs:
* HERE YOU INSERT THESE LINES FROM THE CONSOLE *
After a while, they will reply and the letters will start to leave normally.
Less secure app access and GMail
If your Gmail has two-factor authentication disabled, you must be allowed to have less secure app access: Read this