I was going to ask for Laravel, but Dev Henry beat me to it. I'm sure you have Udemy course on Laravel? From a selfish perspective, I would like to see the php way of taking several user input nuber values, carrying out a calculation, and then displaying the result. I've patched together a working JS version, but still not sorted out the validations (RegEx) for the fields.
Is actually really frustrating that no one wants to do a tutorial a tutorial for a working email form that has the proper security features that are required by web host. That's mainly the whole reason why you would incorporate PHP into the email.
I only found this channel earlier today, but I love your delivery. Really easy to understand. I will have been coding for exactly one year tomorrow and I've just finished building my first full-stack project using JavaScript and PHP. Hope you produce more PHP videos for this channel. Thanks for sharing, Dave, subscribed!
Hi Dave! Finishing up the second Udemy MVC course man what a blessing. Gonna use this email technique with it. You taught us a lot of what I learned in college about Java in those two courses. Extremely valuable resource for up and coming developers. I am going to build a couple more frameworks using some textbooks I found and implement the best from all of them. Your framework is the baseline the router is awesome thank you! It acts like a sort of white list or catalog of pages a user can access on your site. Very cool piece of the puzzle as far as organization and access control.
Nice job of explaining this so it makes sense! Only I want to send through my own webhost mail server, so need to find out how to do that, but Thank you, as I understand more now then I did before watching this!
Great video, congrats! I'm new here, and I will check out other videos on the channel. Two topics that interest me would be a video about superglobal variables in PHP and how to implement a "shopping cart" on PHP and MySQL.
It gets a bad reputation as it's been around so long, and it's easy to write bad code with it; having said that, it's also very easy to pick up and is available everywhere
ok, if composer was unable to install PHPMailer correctly by running: C:\xampp\htdocs>composer require PHPMailer/PHPMailer and I DON'T have the autoload.php file that comes with installing using composer, how does this affect the .php file that contains the instructions for sending the email using SMTP? I was able to download the zip file from the PHPMailer github post and move the PHPMailer pkg to the htdocs/vendor/phpmailer folder however
Finally, I got phpmailer in and working. It was done all with your help and thank you. Question: How can I send two different messages to two emails address?
Hi there, if I run the debugging everything just seem to work properly (the echo email sent appears after all the details) but no e-mails arrive at the written address. Any suggestions? Thanks
If there are no error messages from the SMTP server, then the problem could be with the recipient account - check to see if the message is in the spam folder
@dave-hollingworth great video strait to the point unlike other videos out there :) quick question the sent.html send-email.php and form.html do we put those three files into phpmailer folder once it's downloaded????? please reply
No, those files go in your web root or project folder. The PHPMailer package goes into the same folder. (or the vendor folder if you're using Composer)
Hi Dave, Thank you for making this video! It was super helpful as a beginner to PHP. When I submit the email, it sends to the correct address, but regardless of what email I type in on my form, it will always send from the email I access my SMTP server from. I am using the Google SMTP server, but I also tried this with the Outlook SMTP server and the same thing happened. Is this just a limitation from those SMTP servers?
This is a feature of how the SMTP server works, yes. You can't send an email from someone else's account, you can only send it from the account you're authenticating with. You can use a "reply-to" however if you want someone to reply to a different address that you're sending from.
Hi, I just came by your tutorial and I'm wondering, if I make contact form using SMTP server on my website, from which email address would be an email sent? Can you even use SMTP server to make contact form since it displays only email address you're authenticanting with? Sry if this is a stupid question, but I just started with PHP. @@dave-hollingworth
Good day Dave. I have been trying to send mail on my production server using php but it keeps failing. However, I have tried to buy your course in PHP mailing for one two months now, and I've been successful
Message could not be sent. Mailer Error: SMTP Error: Could not connect to SMTP host. Connection failed. stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failedSMTP server error: QUIT command failed i got this
If this is just a local error, there's a solution here: stackoverflow.com/questions/30556773/how-to-fix-stream-socket-enable-crypto-ssl-operation-failed-with-code-1
Hi Dave...The intro video for the Udemy course PHP for Beginners Build a Content Management System from Scratch with PHP and MySQL says "Style using BOOTCAMP"...It should be, "style using BOOTSTRAP"...Cheers.
@@dave-hollingworth still have o problem. The following. Fatal error. SMTP error: data not accepted... I serach for it and find that the problem is that the mail->From is different with the $mail->addAddress...But what i actually want with this email form, is sending from my friend's mail for example, to my mail....If in the form, i put my email to the mail textarea, then it works..But if i put another mail , then it doesnt work..Do you have any solution..Thank you very much.
@@sosdto7606 When using an SMTP server, you can only send email from the account that you're authorising with, you can't send emails from anyone's account. You can add a reply-to value though if you want to suggest to the email client that a reply is sent to a different email.
If they view the source in the browser, they'll just see the generated HTML. PHP code is executed on the server, before this is sent to the browser, so the source code is never sent to the client.
@@dave-hollingworth is not the link to the PHP file in the action="-" (element field of the HTML file) and thereby susceptible to also being viewed? I am asking is there not a way to download and view the source of a file once the specified location is known/
@@alifelongfriend While you can see which file the form submits to as you say, you can't download this file to see the source code. If you request that file from the server by putting the URL in the browser's address bar (e.g. example.com/process-form.php) then you'll still get the result of the PHP code running before it gets to you. The web server always executes the PHP code before sending it to the browser, so there's no way to see the PHP code on the server in the browser.
Unfortunately I'm not able to install the composer file through the command line (I'm using Windows shell). I changed file directory to my htdocs where my project is located. I would appreciate a more detailed explanation. Thank you in advance. Appreciate your work Dave.
@@dave-hollingworth Thanks, it worked. Now my problem is that I'm not allowed to activate messages from third party (less secured apps)? Any ideas how I could fix this?
@@dave-hollingworth Thank you Dave, I followed the given instructions and it finally worked (so happy). The thing is that I do not see who is sending me the data from the form as the email does not appear in my gmail. It's like I would send an email to myself (receiver email and sender email is both the same. It's the email which I set up in the code). Very strange, maybe I messed up with the code but I have already checked your instruction given in the video several times. Probably it's the 2 step verification, using the generated password which does not allow to communicate with third party? What are your thoughts on this one?
@@lukas584 Not sure what you mean - but if you're not getting emails you send to yourself, Gmail has been known to block this - see some of the results here: www.google.co.uk/search?q=gmail+smtp+can%27t+send+to+yourself
for my code and the one provided in the description I get the HTML Error 405 when I run it in the VSCode Live Server. I changed the SMTP settings accordingly to my provider. The port is set to the correct one. I can't pinpoint what's causing the issue :/
@@dave-hollingworth I scavenged the internet and it seems it's the VScode's live server's fault. I ran the built in PHP local host server and it works. I mean, I still get the errors but they are connected with my poor understanding of the SMTP provider I chose and not your tutorial. Thank you for the upload!
I had the same issue. I got an HTML Error 405 when running index.html in the Live Server. Then I opened index.html in PHP Server and it successfully sent the message and loaded the "sent.html" page with no problem.
it didn't work. I am testing this code on a server not my own local wamp install and i am having trouble. i thought this tutorial would help but it did not
@@dave-hollingworth First of all thank you very much for your tutorials, it really is great information and delivered in a clear and concise manner. Secondly thank you for such a rapid response, wow! unfortunately all i can tell you at this point is the first time i ran your code it did not send the email, i checked my syntax and tried again to no avail. I originally made this comment hoping to learn why it did not work, but I have since gotten successful results using completely different code. so again thank you for your response
I followed all of the steps and copied the PHP code, but when I hit the send button on my HTML page my browser simply displays my raw PHP code rather than sending the email. Any advice?
You're right that wouldn't be secure, but you're not openly sharing your password - this is only used to authenticate with the SMTP server, and is only on the server in the PHP code.
Why is this coming from my email to an the customer email instead the other way around. In the setFrom () I put $name and $email and expected this to be their name and email. Not my name and email. 🤔🤔🤔
@@dave-hollingworth ok thank you. That leads me in a direction. I was using another one of my emails. I am just confused because I have a field to allow potential customer to put in their email (I used an alternate one) and it was coming to that email instead of my email so I'll have to learn better how to make it work. But thanks again and you've been a big help. Got yourself a subscriber.
Enable debugging as shown in the video to see if there are any more detailed messages shown in the debugging output. That message though suggests a network issue
what you have failed to mention in this video is that the "from" portion in the email will use your email to send rather than the person's email to show up making the email portion useless. What you need to put in this video is how to have the "from" portion show up as the person's email. I can see that you are using a third party system to make this work.
You can't send an email from someone else's account. The email is sent from the account that's authorised on the server. What you can do though is add a "reply-to" address, which is what the email client will use as the recipient email address if you click "reply". Not all email clients support this though. For example: $mail->addReplyTo('info@example.com', 'Information');
@@dave-hollingworth I did a different smtp to get the result. It works fine now. I noticed you were using a sandbox to make it work, I used sendinblue or smth like that
Thanks for this great tutorial! Beginner question probably - but I consistently get a 404 on form submission. I've got the form method as "post" and the action="send-email.php", and send-email.php is all spelled correctly, etc. But I'm sure I'm missing something obvious (code is copied and phpmailer is installed via composer in VScode). Thanks again for the video.
@@dave-hollingworth Thanks, hadn't thought to actually look there. It's coming up as "send-email.php" in the address bar. I should specify that on the browser when I click "send" I actually get a 405 error, but in the VScode terminal it shows up as a 404 for send-email.php - not found. *edit - and I had turned on debugging mode, as per your instructions, but I still just get the same error*
@@jamiemacdonald5972 Are you developing in a subfolder of the root? E.g. localhost/subfolder/form.html If so, you need to include that subfolder (or don't start the action attribute of the form with a slash if you are doing) I'm afraid I don't use VSCode so I'm not familiar with its debugging tools
@@dave-hollingworth Yep, same folder, which is why it's strange getting the 404. Anyway thanks for the help and for the video, great intro to php concepts!
7:10 I get the same error, but in my case it says line 2265 in PHPMailer.php file, which is: throw new Exception($this->lang('authenticate')); And the additional information from the debugging property says "Username and Password not accepted"
Hello bro I configured as by your tutorial. When I try to send email the form is not redirect to php. So I am not receiving email. What might be the issue?
Because I have tried making different forms and when I upload them and run them online, form is not submitted and all I keep seeing is the else part for failure. But I'm using a personal email address which is not connected to the domain, could that be the problem?
@@denisk256 I'm not sure what you mean - when submitting the form, you can put in whatever email address you like, this will be sent to the recipient. When you authenticate with the SMTP server, the username is usually the same as the email address that you use as the sender. You can't send email from anyone's email address, only the one you authenticate with.
You need to have PHP already installed, so if you do you'll have a php.exe file installed somewhere on your system. I recommend XAMPP for Windows if you haven't got one already
A 500 error is an error on the server, most likely an error in the code - try adding these lines to the top of your PHP: ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); error_reporting(E_ALL); This will show the error detail instead of the 500 error. Alternatively, look in the web server's error log to see the error detail.
No - you would typically store the password in a separate file, e.g. an .env file and put this in your .gitignore file so it isn't uploaded to your repo
@@dave-hollingworth ah, so it's fine to have my "mail.php" (the PHP file you created) & install phpmailer in the same environment as my work folder? ex. project-folder/ ls: index.html contact.html mail.php vendor/ How do I go about moving the username & password to a .env file.(first time hearing about .env) Will the PHP file work the same? Thank you Dave for the answer back, I'm new to PHP so I'm still learning atm.
i did exact same thing what you did, I am using hostinger web hosting and used that detail for smtp but send-email.php on browser it shows This page isn’t working localhost is currently unable to handle this request.
If you get a generic error message like that, there should be more error detail available in the error log - you should have access to this in the hostinger web panel. This should tell us exactly what the error is and where it's occurring
As far as I know, yes - I'm not sure how a bot could get your login data from this, unless your server was compromised and they had access to your source code with your credentials in it.
@@dave-hollingworth Thank you for your answer, I managed to fix this issue indeed. How come the function header is not working? Like I just get the PHP debug page but the HTML page is not appearing.
@@Topo-ev2ct Could be many reasons - do you get a detailed error message? That should tell you where the error has occurred, in what script and on what line
@@dave-hollingworth not really a detailed error, whenever I press on the send error, i just get a white page and that's it, the mail does indeed get sent but i am not able to head on another pages (as the header itself should do)
@@Topo-ev2ct A blank white page usually means an error has occurred but PHP isn't configured to display it - try adding these lines to the top of your code: ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); error_reporting(E_ALL);
Please I have been trying to get your course on udemy on Sending Email with PHP. I've not been able to make purchase. I have been debited twice for that same course , yet is has not been successful. Write to udemy. I have also written to them I may not the only one having the challenge
@@abanwaraphael1526 They won't be able to give me any details of an individual customer, you'll have to contact Udemy support directly yourself with regards to specific purchasing issues: support.udemy.com/
Hello sir I watched your video and tried to install PHPMailer successfully. PHPMailer can work normally on the website set up by XAMPP on the local computer, but PHPMailer cannot work normally when the webpage is uploaded to the PHP website environment on synology , have you ever encountered this problem?
I'm afraid not, I haven't used Synology - it sounds like it's a permissions or network problem if the code works locally - I would suggest contacting their technical support
You need to be able to run PHP - the simplest way to do this is to install something like XAMPP and put the scripts in the root folder, then load them from there.
@@BalkanLeaksArchive Yes, you can use any free SMTP server. I would strongly suggest you use PHPMailer, it's just plain PHP code but wrapped up in a library. There's no reason it shouldn't work on your hosting, and it's so much easier than the mail() function.
Fatal error: Uncaught Error: Class "PHPMailer" not found in C:\xampp\htdocs\send-email.php:13 Stack trace: #0 {main} thrown in C:\xampp\htdocs\send-email.php