Author |
Thread: How do I email the content of an HTML form? (Read 7569 times) |
|
Secret Drinker
MV Fixture
Paul Gunningham, MoM
Posts: 207
|
|
How do I email the content of an HTML form?
« : 17.08.04 at 13:51 » |
Quote
|
[OT Techie Question] Apologies if this isn't on-topic, but I understood that it would be OK to post such questions here - please correct me if I'm wrong. The problem I have is this: I created an HTML form on a website, the idea being that a visitor to the site would be able to fill in the form with certain details (name, address, etc.). The form had an action to submit an email when the user clicked on the button at the end of the form, using "mailto:" action. An email would then be sent to me without the user needing to do anything else after submitting the form - fairly standard I'd have thought. This all worked fine on my PC when I tested it - it sent me an email with the fields of the form included in the message body. However (and this is where the story really starts) when I tried it on a different PC, I just got a normal email window popping up, with none of the form information in it (just as if I'd included a normal href="mailto:..." link in the web page). On looking into it further, it seems that M$ in its wisdom has stopped supporting the forms mailto: feature in later versions of IE, supposedly for "security reasons". So my form is now useless and I've had to revert to asking the user to send a simple email with the details - a big step backwards, as far as I'm concerned My question is - does anyone know of another easy way to achieve what I want, which is to email a form to me directly from the web page without any further intervention from the user after he/she clicks on the submit button? I'm sure there must a be a suitable script somewhere if only I could find it... Any help with this would be appreciated. Cheers Paul
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=0#0 |
Staving off the pressure... by drinking real ale
|
|
|
Snoopy
MV Feature
Alexis Birkill
Posts: 44
|
|
Re: How about a sub-Forum for techie questions?
« Reply #1: 17.08.04 at 14:01 » |
Quote
|
Hi Paul, Firstly, it's quite OK for you to post any techie-related questions in the forum - I may not be able to answer them, but I'll try! However, could you make a new thread for the question, rather than adding to an existing thread - it makes it easier to keep track, and also helps others browse. I've split this off into a seperate thread. The problem that you are having is that using the 'mailto:' action relies on the user's PC and e-mail client to do the mail delivery - this means that if they have a different e-mail client (or worse, use hotmail and have no e-mail client at all), the results may not be as you desire. The best way to get around this is to have the server do the e-mailing - this means that the form sends the e-mail data (address, subject line, message body) to a script running on the server, which then sends the e-mail to the desired location. However, this requires some form of scripting support to be on your server. These days, almost all hosting companies will support either PHP, Perl, or both. There are thousands of simple e-mail scripts written in either PHP or Perl that will do exactly what you need, and return the same results whatever the computer setup of the user is. If you are able to let me know what scripting support your hosting company provides (they should be able to tell you), then I'll look at recommending a simple script for you to try. Cheers, Alexis.
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=1#1 |
|
|
|
Secret Drinker
MV Fixture
Paul Gunningham, MoM
Posts: 207
|
|
Re: How do I email the content of an HTML form?
« Reply #2: 17.08.04 at 14:09 » |
Quote
|
Thanks for the reply, Alexis. I was hoping to avoid php, cgi, asp, etc. as (a) I don't currently know how to write the scripts and (b) I don't know which are supported by my ISP. I'll try and find out though (they don't seem to say on their website, as I've already looked there - I'll have to ask them the question). I'd overlooked the fact that web mail users wouldn't be able to use the mechanism anyway, which is a very valid point - thanks for pointing that out. I'll let you know when I find out which scripts my ISP supports. Thanks again for the prompt reply - noted about the new topic for new questions, I just thought this particular one was too OT for that. Cheers Paul
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=2#2 |
Staving off the pressure... by drinking real ale
|
|
|
Snoopy
MV Feature
Alexis Birkill
Posts: 44
|
|
Re: How do I email the content of an HTML form?
« Reply #3: 17.08.04 at 14:22 » |
Quote
|
Hi Paul, A mail script is very simple to do in either PHP or Perl, and is an excellent way to 'dip a toe' into the wonderful world of web scripting! PHP is the simpler language to understand, and is supported by pretty much any hosting company these days. I've sketched out a simple PHP script that should work below - you can try this on your website to find out if it supports PHP, for one thing! You'll need an HTML page with the following form code in it: Code:<form action="mail.php" method="post"> Name: <input type="text" name="name" size="20" maxlength="20"><br> Your Email: <input type="text" name="email" size="30" maxlength="30"><br> Subject: <input type="text" name="subject" size="30" maxlength="30"><br> Text:<textarea name="text" name="text" cols="50" rows="10"></textarea><br> <input type="submit" name="submit" value="Send"> </form> |
| You then need to create a file called 'mail.php', containing the following: Code:<?php /* Extract the data that was sent in the */ /* form - each form element becomes a */ /* variable in PHP identified by the 'name' */ /* attribute of the form. */ @extract($_POST); /* Tidy up the data submitted - get rid of */ /* any slashes that could confuse the mailer */ $name = stripslashes($name); $email = stripslashes($email); $subject = stripslashes($subject); $text = stripslashes($text); /* The mail function - change */ /* 'toaddress@domain.com' to the address */ /* you want the mail to go to */ mail('toaddress@domain.com',$subject,$text,"From: $name <$email>"); /* Finally, redirect the user to a page letting */ /* them know the mail was successfully sent */ header("location:success.html"); ?> |
| This is a very simple form that only allows the visitors to e-mail you, and you wouldn't even be giving out your e-mail address, so the automated spambots won't collect it. Edit: Slight mistake in the code - the address in the 'mail' function is the address the mail is sent to - i.e. your address!
|
« Last Edit: 17.08.04 at 14:38 by Snoopy » |
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=3#3 |
|
|
|
Secret Drinker
MV Fixture
Paul Gunningham, MoM
Posts: 207
|
|
Re: How do I email the content of an HTML form?
« Reply #4: 17.08.04 at 14:39 » |
Quote
|
Hi Alexis Thanks for the detailed reply. I'll certainly give that a go (I'll have to wait until tonight when I can upload the script to the server). Good tip about the email address. I've already removed any explicit email addresses from my websites to deter spambots, etc., and replaced them with a Javascript script that is invoked from a separate .js file. I can still have the script display the actual address on screen if I want, without it being embedded in the code for spammers to find. Anyway, I'll give your script a go and let you know how I get on. Thanks again Paul
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=4#4 |
Staving off the pressure... by drinking real ale
|
|
|
Gerry Smith
MV Fixture
Posts: 222
|
|
Re: How about a sub-Forum for techie questions?
« Reply #5: 17.08.04 at 14:09 » |
Quote
|
Hi Paul - your ISP/Web Host will in all likelihood have a ready to roll form to email script pre-installed in your cgi-bin (or similar) along with instructions for use. Failing that, there are many such scripts available - try Matt's Script Archive. Gerry
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=5#5 |
Out playing the saxes
|
|
|
Roger Cornwell
MV Friend
Posts: 22
|
|
Re: How do I email the content of an HTML form?
« Reply #6: 17.08.04 at 15:00 » |
Quote
|
Actually, the programs in Matt's Script Archive were developed some time ago and there are security issues with some of them. Don't get me wrong -- I've used them myself and indeed I probably still am. But I suggest you look at the replacements in NMS (which they say definitely does not stand for Not Matt's Scripts as these are more recent and more secure. See http://nms-cgi.sourceforge.net/ for the home page of the project and http://nms-cgi.sourceforge.net/scripts.shtml for the page that you can download FormMail from.
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=6#6 |
Roger
|
|
|
Secret Drinker
MV Fixture
Paul Gunningham, MoM
Posts: 207
|
|
Re: How do I email the content of an HTML form?
« Reply #7: 17.08.04 at 19:00 » |
Quote
|
Thanks for all the help so far, guys. I tried Alexis's script but I got the following error message: Method Not Allowed The requested method POST is not allowed for the URL xxx Apache/1.3.26 Server at xxx Any ideas? Does it mean my ISP doesn't support PHP? Cheers Paul Still ignorant in Herts
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=7#7 |
Staving off the pressure... by drinking real ale
|
|
|
Snoopy
MV Feature
Alexis Birkill
Posts: 44
|
|
Re: How do I email the content of an HTML form?
« Reply #8: 17.08.04 at 19:10 » |
Quote
|
Try renaming the file 'mail.php' to 'mail.php3', and also altering the form to point to the new filename. If that doesn't work, it seems that your server might not support PHP (the error message is basically saying that it doesn't know how to handle a .php file, either because they've configured it to only accept .php3 files, or because PHP isn't installed). Best thing to do (assuming no luck with the rename) is to mail them and ask them if they do support any scripting languages.
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=8#8 |
|
|
|
Gerry Smith
MV Fixture
Posts: 222
|
|
Re: How do I email the content of an HTML form?
« Reply #9: 17.08.04 at 19:12 » |
Quote
|
Paul - see if your ISP has an off the peg script you can use. If no or only limited server side scripting is available, consider changing your host - Supanames at less than £30 a year offer a very good service with many server side functions available. Gerry
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=9#9 |
Out playing the saxes
|
|
|
Secret Drinker
MV Fixture
Paul Gunningham, MoM
Posts: 207
|
|
Re: How do I email the content of an HTML form?
« Reply #10: 17.08.04 at 19:55 » |
Quote
|
on 17.08.04 at 19:10, Snoopy wrote:Try renaming the file 'mail.php' to 'mail.php3', and also altering the form to point to the new filename. If that doesn't work, it seems that your server might not support PHP (the error message is basically saying that it doesn't know how to handle a .php file, either because they've configured it to only accept .php3 files, or because PHP isn't installed). Best thing to do (assuming no luck with the rename) is to mail them and ask them if they do support any scripting languages. |
| I've tried that now, and get a similar message I've emailed them to find out what they do support but I'll have to wait for the proper answer (I've got the usual automated response saying someone will be contacting me with a proper answer). Thanks again for the help - I'll let you know what they say... Paul
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=10#10 |
Staving off the pressure... by drinking real ale
|
|
|
Secret Drinker
MV Fixture
Paul Gunningham, MoM
Posts: 207
|
|
Re: How do I email the content of an HTML form?
« Reply #11: 17.08.04 at 19:57 » |
Quote
|
on 17.08.04 at 19:12, Gerry Smith wrote:Paul - see if your ISP has an off the peg script you can use. If no or only limited server side scripting is available, consider changing your host - Supanames at less than £30 a year offer a very good service with many server side functions available. Gerry |
| Thanks Gerry - I've also asked them that in the same email to their support folks. I'll bear that in mind. I have more than one ISP so I might try using another one... Cheers Paul
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=11#11 |
Staving off the pressure... by drinking real ale
|
|
|
Snoopy
MV Feature
Alexis Birkill
Posts: 44
|
|
Re: How do I email the content of an HTML form?
« Reply #12: 17.08.04 at 21:12 » |
Quote
|
If we're recommending external hosting companies, I'd have to throw 34sp into the mix - I was looking for a host for a website I'd been asked to design recently, and they were recommended by a few people. 15 quid a year (!), and they support just about everything under the sun - PHP, Perl, C, TCL, MySQL, Cron jobs, etc. etc. Lightning fast, and based in the UK so ideal for hosting sites having a primarily UK-based audience. But what really impressed me was when I got an instant reply (less than 2 minutes) to my technical support question. Stunning enough in this day and age, you say, but even more amazing was that it was 7.30pm on a Sunday.
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=12#12 |
|
|
|
Secret Drinker
MV Fixture
Paul Gunningham, MoM
Posts: 207
|
|
Re: How do I email the content of an HTML form?
« Reply #13: 18.08.04 at 12:01 » |
Quote
|
on 17.08.04 at 21:12, Snoopy wrote: But what really impressed me was when I got an instant reply (less than 2 minutes) to my technical support question. Stunning enough in this day and age, you say, but even more amazing was that it was 7.30pm on a Sunday. |
| Sounds a lot better than my ISP. Last night I had to jump through various hoops to fill in a web form to contact them with my question about scripting languages and scripts they support/provide (they don't provded a simple email address), only to get a reply this morning saying my question was too complicated to answer by email and I'd have to call their help line between 8am and whenever they finish (at 50p/minute). No thanks! I've filled in another form, this time complaining that all I wanted was a straightforward answer to my original question and not an extra large phone bill Anyroad, I've discovered meanwhile that my other ISP has a formmail script available (.pl - is that perl?), so I'm going to try that next. The only drawback I can see is that from my initial tests it seems I have to send it to an email address on the 2nd ISP, but it allows me to specify a url for the "successful submission" anywhere, and it looks as if I can do it that way, for the time being, as a workaround (fingers crossed...) Thanks for all the help and the tips from everyone. Cheers Paul Now an MV Regular thanks to the All-Bran
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=13#13 |
Staving off the pressure... by drinking real ale
|
|
|
Secret Drinker
MV Fixture
Paul Gunningham, MoM
Posts: 207
|
|
Re: How do I email the content of an HTML form?
« Reply #14: 22.08.04 at 12:49 » |
Quote
|
on 18.08.04 at 12:01, Secret Drinker wrote: Anyroad, I've discovered meanwhile that my other ISP has a formmail script available (.pl - is that perl?), so I'm going to try that next. The only drawback I can see is that from my initial tests it seems I have to send it to an email address on the 2nd ISP, but it allows me to specify a url for the "successful submission" anywhere, and it looks as if I can do it that way, for the time being, as a workaround (fingers crossed...) |
| I thought I had this working, but I've now got another problem. Although it worked fine for me, when I got someone else to test it, they got an error message to the effect that a form sent from outside the 2nd ISP needs to have the url in the 1st ISP's webspace(where the form origniates from) added to the @referers array on the 2nd ISP, or it won't work. Is there a way I can do this? I don't fully understand what's involved, but if I need to change the actual formmail script I assume I can't do it. (I know it would be simpler to change ISPs, but I'd like to know whether I can get round this problem!) Can anyone help? Thanks in advance, Paul
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=14#14 |
Staving off the pressure... by drinking real ale
|
|
|
Roger Cornwell
MV Friend
Posts: 22
|
|
Re: How do I email the content of an HTML form?
« Reply #15: 22.08.04 at 14:20 » |
Quote
|
Paul - There is (I think) a way round it, because otherwise you would need to change the $referers array (and yes I have spelt that the way it needs to be, ie only one r in the middle). Can you put the entire web page containing the form on your second ISP's webspace? This should be possible, and you will have to change any links leading to it, and any code on the page refering to other files, ie the <A> <IMG> and <LINK> tags. You will have to replace relative addresses eg <IMG SRC="images/picture.jpg"> with full addresses eg <IMG SRC="http://www.secondisp.co.uk/~username/images/picture.jpg"> PM me with actual examples and we can continue this off-list unless there's a rush of MVs interested in the details...
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=15#15 |
Roger
|
|
|
Secret Drinker
MV Fixture
Paul Gunningham, MoM
Posts: 207
|
|
Re: How do I email the content of an HTML form?
« Reply #16: 22.08.04 at 14:50 » |
Quote
|
on 22.08.04 at 14:20, Roger Cornwell wrote:Paul - There is (I think) a way round it, because otherwise you would need to change the $referers array (and yes I have spelt that the way it needs to be, ie only one r in the middle). Can you put the entire web page containing the form on your second ISP's webspace? This should be possible, and you will have to change any links leading to it, and any code on the page refering to other files, ie the <A> <IMG> and <LINK> tags. You will have to replace relative addresses eg <IMG SRC="images/picture.jpg"> with full addresses eg <IMG SRC="http://www.secondisp.co.uk/~username/images/picture.jpg"> |
| Thanks Roger - I've already thought of that, and I've prepared the new version to run on the 2nd ISP (although I haven't actually tested it yet). I was just wondering if there was any other way? I guess not, because my (very limited) understanding is that otherwise I would have to change the 2nd ISP's formmail script, which I can't! One thing that puzzled me slightly is that it worked OK when I tested it myself. I was still invoking the 2nd ISP's formmail.pl from a different ISP, so why didn't it object then? It must somehow have known it was me (maybe by the IP address?). If anyone can explain that I'd be interested. Thanks again for your help. Cheers Paul
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=16#16 |
Staving off the pressure... by drinking real ale
|
|
|
Roger Cornwell
MV Friend
Posts: 22
|
|
Re: How do I email the content of an HTML form?
« Reply #17: 22.08.04 at 19:17 » |
Quote
|
Quote:One thing that puzzled me slightly is that it worked OK when I tested it myself. |
| Were you running it off your hard disk? I think from memory that leaves the HTTP_REFERER field null and that might have explained it. Some browsers also don't provide the HTTP_REFERER field back to the server. There's another potential problem and there's not much you can do about it: some ISPs (eg BlueYonder) have caching and the referer there is set to the cache (which is a Blue Yonder domain name) rather than the original web page. This tripped me up when I was implementing code to prevent hot-linking (folk were downloading some nice images we had to use as wallpaper on their site). After I implemented the code to allow images only to be loaded by web pages on the same site, my brother (who has Blue Yonder broadband) stopped seeing them. This is probably going too off-topic, even for an off-topic thread!
|
|
https://peteatkin.com/forum?board=tech&action=display&num=1092747743&start=17#17 |
Roger
|
|
|
|