Author |
Topic |
live4offrd
Starting Member
9 Posts |
Posted - 13 November 2002 : 13:53:43
|
I posted in the general topics and was recomended to ask for some help here, so I will be pleased if you can help me...
I have a forum I am working on for some friends and they would like to have it email them the actual post when they subscribe to the forum and someone posts, instead of just a link to the post. They had a "forum" on MSN before and that is what it did, so they are used to recieving the posts in their email.
Anyone have any ideas on this?
Thanks.
|
|
David K
Junior Member
494 Posts |
Posted - 13 November 2002 : 15:08:00
|
i don't know how to write MODs but i might be able to help you with some code changes, what ver do you use? |
|
|
davemaxwell
Access 2000 Support Moderator
USA
3020 Posts |
Posted - 13 November 2002 : 15:14:22
|
On the surface, it seems like it should be easy, but there is one big problem with doing that: the formatting of the posts. Number one, I'd make it text only, HTML emails would open a can of worms I'm not sure you want to get involved in (just my opinion)
The first thing to do is alter post_info.asp. You will need to alter the two processubscriptions calls(lines 874 & 1041 in v3.4.03) to add the message to the sub call (you could do it in the sub, but this way is easier..). Make sure you are passing the correct message field (should be txtMessage, but be sure)
In the processsubscriptions in inc_subscriptions.asp, you will need to add the field for the message into the parameters, then change the code to pass the message. Change the code from this:
strMessage = strMessage & "Regarding the subject - " & TopicName & "." & vbNewline & vbNewline
to this:
strMessage = strMessage & ". Here is the post: " & vbNewLine & vbNewLine
strMessage = strMessage & StripCode(TopicPost) & vbNewline & vbNewline
You will then need a new function called stripcode. This code will need to look something like this:
function StripCode(fString)
if fString = "" or IsNull(fstring) then
fString = " "
else if strAllowForumCode <> "1" then
fString = fString
else
fString = replace(fString, "<blockquote id=""quote""><font size=""" & strFooterFontSize & """ face=""" & strDefaultFontFace & """ id=""quote"">quote:<hr height=""1"" noshade id=""quote"">","", 1, -1, 1)
fString = replace(fString, "<hr height=""1"" noshade id=""quote""></blockquote id=""quote""></font id=""quote"">","", 1, -1, 1)
fString = replace(fString, "<b>","", 1, -1, 1)
fString = replace(fString, "</b>","", 1, -1, 1)
fString = replace(fString, "<s>","", 1, -1, 1)
fString = replace(fString, "</s>","", 1, -1, 1)
fString = replace(fString, "<u>","", 1, -1, 1)
fString = replace(fString, "</u>","", 1, -1, 1)
fString = replace(fString, "<i>","", 1, -1, 1)
fString = replace(fString, "</i>","", 1, -1, 1)
fString = replace(fString, "<font face=""Andale Mono"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Andale Mono"">","", 1, -1, 1)
fString = replace(fString, "<font face=""Arial"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Arial"">","", 1, -1, 1)
fString = replace(fString, "<font face=""Arial Black"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Arial Black"">","", 1, -1, 1)
fString = replace(fString, "<font face=""Book Antiqua"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Book Antiqua"">","", 1, -1, 1)
fString = replace(fString, "<font face=""Century Gothic"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Century Gothic"">","", 1, -1, 1)
fString = replace(fString, "<font face=""Comic Sans MS"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Comic Sans MS"">","", 1, -1, 1)
fString = replace(fString, "<font face=""Courier New"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Courier New"">","", 1, -1, 1)
fString = replace(fString, "<font face=""Georgia"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Georgia"">","", 1, -1, 1)
fString = replace(fString, "<font face=""Impact"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Impact"">","", 1, -1, 1)
fString = replace(fString, "<font face=""Tahoma"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Tahoma"">","", 1, -1, 1)
fString = replace(fString, "<font face=""Times New Roman"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Times New Roman"">","", 1, -1, 1)
fString = replace(fString, "<font face=""Trebuchet MS"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Trebuchet MS"">","", 1, -1, 1)
fString = replace(fString, "<font face=""Script MT Bold"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Script MT Bold"">","", 1, -1, 1)
fString = replace(fString, "<font face=""Stencil"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Stencil"">","", 1, -1, 1)
fString = replace(fString, "<font face=""Verdana"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Verdana"">","", 1, -1, 1)
fString = replace(fString, "<font face=""Lucida Console"">","", 1, -1, 1)
fString = replace(fString, "</font id=""Lucida Console"">","", 1, -1, 1)
fString = replace(fString, "<font color=""red"">","", 1, -1, 1)
fString = replace(fString, "</font id=""red"">","", 1, -1, 1)
fString = replace(fString, "<font color=""green"">","", 1, -1, 1)
fString = replace(fString, "</font id=""green"">","", 1, -1, 1)
fString = replace(fString, "<font color=""blue"">","", 1, -1, 1)
fString = replace(fString, "</font id=""blue"">","", 1, -1, 1)
fString = replace(fString, "<font color=""white"">","", 1, -1, 1)
fString = replace(fString, "</font id=""white"">","", 1, -1, 1)
fString = replace(fString, "<font color=""purple"">","", 1, -1, 1)
fString = replace(fString, "</font id=""purple"">","", 1, -1, 1)
fString = replace(fString, "<font color=""yellow"">","", 1, -1, 1)
fString = replace(fString, "</font id=""yellow"">","", 1, -1, 1)
fString = replace(fString, "<font color=""violet"">","", 1, -1, 1)
fString = replace(fString, "</font id=""violet"">","", 1, -1, 1)
fString = replace(fString, "<font color=""brown"">","", 1, -1, 1)
fString = replace(fString, "</font id=""brown"">","", 1, -1, 1)
fString = replace(fString, "<font color=""black"">","", 1, -1, 1)
fString = replace(fString, "</font id=""black"">","", 1, -1, 1)
fString = replace(fString, "<font color=""pink"">","", 1, -1, 1)
fString = replace(fString, "</font id=""pink"">","", 1, -1, 1)
fString = replace(fString, "<font color=""orange"">","", 1, -1, 1)
fString = replace(fString, "</font id=""orange"">","", 1, -1, 1)
fString = replace(fString, "<font color=""gold"">","", 1, -1, 1)
fString = replace(fString, "</font id=""gold"">","", 1, -1, 1)
fString = replace(fString, "<font color=""beige"">","", 1, -1, 1)
fString = replace(fString, "</font id=""beige"">","", 1, -1, 1)
fString = replace(fString, "<font color=""teal"">","", 1, -1, 1)
fString = replace(fString, "</font id=""teal"">","", 1, -1, 1)
fString = replace(fString, "<font color=""navy"">","", 1, -1, 1)
fString = replace(fString, "</font id=""navy"">","", 1, -1, 1)
fString = replace(fString, "<font color=""maroon"">","", 1, -1, 1)
fString = replace(fString, "</font id=""maroon"">","", 1, -1, 1)
fString = replace(fString, "<font color=""limegreen"">","", 1, -1, 1)
fString = replace(fString, "</font id=""limegreen"">","", 1, -1, 1)
fString = replace(fString, "<h1>","", 1, -1, 1)
fString = replace(fString, "</h1>","", 1, -1, 1)
fString = replace(fString, "<h2>","", 1, -1, 1)
fString = replace(fString, "</h2>","", 1, -1, 1)
fString = replace(fString, "<h3>","", 1, -1, 1)
fString = replace(fString, "</h3>","", 1, -1, 1)
fString = replace(fString, "<h4>","", 1, -1, 1)
fString = replace(fString, "</h4>","", 1, -1, 1)
fString = replace(fString, "<h5>","", 1, -1, 1)
fString = replace(fString, "</h5>","", 1, -1, 1)
fString = replace(fString, "<h6>","", 1, -1, 1)
fString = replace(fString, "</h6>","", 1, -1, 1)
fString = replace(fString, "<font size=""1"">","", 1, -1, 1)
fString = replace(fString, "</font id=""size1"">","", 1, -1, 1)
fString = replace(fString, "<font size=""2"">","", 1, -1, 1)
fString = replace(fString, "</font id=""size2"">","", 1, -1, 1)
fString = replace(fString, "<font size=""3"">","", 1, -1, 1)
fString = replace(fString, "</font id=""size3"">","", 1, -1, 1)
fString = replace(fString, "<font size=""4"">","", 1, -1, 1)
fString = replace(fString, "</font id=""size4"">","", 1, -1, 1)
fString = replace(fString, "<font size=""5"">","", 1, -1, 1)
fString = replace(fString, "</font id=""size5"">","", 1, -1, 1)
fString = replace(fString, "<font size=""6"">","", 1, -1, 1)
fString = replace(fString, "</font id=""size6"">","", 1, -1, 1)
fString = replace(fString, "<br />", vbNewLine, 1, -1, 1)
fString = replace(fString, "<hr noshade size=""1"">","", 1, -1, 1)
fString = replace(fString, "<div align=""left"">","", 1, -1, 1)
fString = replace(fString, "</div id=""left"">","", 1, -1, 1)
fString = replace(fString, "<center>","","", 1, -1, 1)
fString = replace(fString, "</center>","","", 1, -1, 1)
fString = replace(fString, "<div align=""right"">","", 1, -1, 1)
fString = replace(fString, "</div id=""right"">","", 1, -1, 1)
fString = replace(fString, "<ul>","","", 1, -1, 1)
fString = replace(fString, "</ul>","","", 1, -1, 1)
fString = replace(fString, "<ol type=""1"">","", 1, -1, 1)
fString = replace(fString, "</ol id=""1"">","", 1, -1, 1)
fString = replace(fString, "<ol type=""a"">","", 1, -1, 1)
fString = replace(fString, "</ol id=""a"">","", 1, -1, 1)
fString = replace(fString, "<li>","", 1, -1, 1)
fString = replace(fString, "</li>","", 1, -1, 1)
fString = replace(fString, "<pre id=""code""><font face=""courier"" size=""" & strDefaultFontSize & """ id=""code"">",,"", 1, -1, 1)
fString = replace(fString, "</font id=""code""></pre id=""code"">","", 1, -1, 1)
fString = replace(fString, "<img align=""right"" src=""","", 1, -1, 1)
fString = replace(fString, "<img align=""left"" src=""","", 1, -1, 1)
fString = replace(fString, """ border=""0"">","", 1, -1, 1)
fString = replace(fString, """ id=""right"" border=""0"">","", 1, -1, 1)
fString = replace(fString, """ id=""left"" border=""0"">","", 1, -1, 1)
if strBadWordFilter = "1" then
fString = ChkBadWords(fString)
end if
end if
StripCode = fString
end function
That should get you started. There may be more to change after you test it some. Good luck!
DISCLAIMER: This has NOT been tested in anyway, shape or form. Make sure to backup before trying it.... |
Dave Maxwell Barbershop Harmony Freak |
Edited by - davemaxwell on 13 November 2002 15:20:57 |
|
|
live4offrd
Starting Member
9 Posts |
Posted - 13 November 2002 : 17:57:18
|
Thanks so, much.. I will try this and post my results here...
Thanks again. |
|
|
live4offrd
Starting Member
9 Posts |
Posted - 13 November 2002 : 18:40:25
|
I understand all the parts other than the ProcessSubscriptions
Is this how I should add the txtMessage to the process?
ProcessSubscriptions rs("MEMBER_ID"), Cat_ID, Forum_ID, Topic_ID, Moderation, txtMessage
When I add it like that I get the error
Wrong number of arguments or invalid property assignment: 'ProcessSubscriptions' |
|
|
davemaxwell
Access 2000 Support Moderator
USA
3020 Posts |
Posted - 13 November 2002 : 18:58:29
|
You also need to add a field to the Sub definition in the inc_subscription.asp file to accomodate this new field. This is where I mentioned it previously:
quote:
In the processsubscriptions in inc_subscriptions.asp, you will need to add the field for the message into the parameters, then change the code to pass the message. Change the code from this:
|
Dave Maxwell Barbershop Harmony Freak |
|
|
nankingrevenge
Starting Member
36 Posts |
Posted - 25 November 2002 : 19:00:45
|
I'm also interested in a mod that does this, but I don't have the ASP skills to make it happen. The purpose for me is to have a forum but to accomodate members who are used to the mailing list (majordomo) way of doing things. Of course, if they want to reply, they will have to log onto the forum, versus replying to the subscription notification email. |
|
|
arup
New Member
United Kingdom
63 Posts |
Posted - 21 January 2003 : 05:42:57
|
a few of minor errors in the above code, so here are the corrected lines:-
fString = replace(fString, "<center>","","", 1, -1, 1)
should be:-
fString = replace(fString, "<center>","", 1, -1, 1)
*****
fString = replace(fString, "</center>","","", 1, -1, 1)
should be:-
fString = replace(fString, "</center>","", 1, -1, 1)
*****
fString = replace(fString, "<ul>","","", 1, -1, 1)
should be:-
fString = replace(fString, "<ul>","", 1, -1, 1)
*****
fString = replace(fString, "</ul>","","", 1, -1, 1)
should be:-
fString = replace(fString, "</ul>","", 1, -1, 1)
*****
and finally,
fString = replace(fString, "<pre id=""code""><font face=""courier"" size=""" & strDefaultFontSize & """ id=""code"">",,"", 1, -1, 1)
should be:-
fString = replace(fString, "<pre id=""code""><font face=""courier"" size=""" & strDefaultFontSize & """ id=""code"">", "", 1, -1, 1)
Hope that helps |
|
|
arup
New Member
United Kingdom
63 Posts |
Posted - 18 February 2003 : 12:34:53
|
You might also want to add the following to remove Forum Code tags from the email notification. The smilies are left in though
Just make sure you replace all the "{" and "}" with "[" and "]" respectively before you paste it into your code. I had to use different brackets here to get the post to show up properly.
fString = replace(fString, "{b}", "", 1, -1, 1)
fString = replace(fString, "{/b}", "", 1, -1, 1)
fString = replace(fString, "{i}", "", 1, -1, 1)
fString = replace(fString, "{/i}", "", 1, -1, 1)
fString = replace(fString, "{u}", "", 1, -1, 1)
fString = replace(fString, "{/u}", "", 1, -1, 1)
fString = replace(fString, "{s}", "", 1, -1, 1)
fString = replace(fString, "{/s}", "", 1, -1, 1)
fString = replace(fString, "{left}", "", 1, -1, 1)
fString = replace(fString, "{/left}", "", 1, -1, 1)
fString = replace(fString, "{center}", "", 1, -1, 1)
fString = replace(fString, "{/center}", "", 1, -1, 1)
fString = replace(fString, "{right}", "", 1, -1, 1)
fString = replace(fString, "{/right}", "", 1, -1, 1)
fString = replace(fString, "{hr}", "", 1, -1, 1)
fString = replace(fString, "{url}", "", 1, -1, 1)
fString = replace(fString, "{/url}", "", 1, -1, 1)
fString = replace(fString, "{img}", "", 1, -1, 1)
fString = replace(fString, "{/img}", "", 1, -1, 1)
fString = replace(fString, "{code}", "", 1, -1, 1)
fString = replace(fString, "{/code}", "", 1, -1, 1)
fString = replace(fString, "{quote}", "", 1, -1, 1)
fString = replace(fString, "{/quote}", "", 1, -1, 1)
fString = replace(fString, "{list}", "", 1, -1, 1)
fString = replace(fString, "{/list}", "", 1, -1, 1)
fString = replace(fString, "{*}", "", 1, -1, 1)
fString = replace(fString, "{/*}", "", 1, -1, 1)
fString = replace(fString, "{size=1}", "", 1, -1, 1)
fString = replace(fString, "{/size=1}", "", 1, -1, 1)
fString = replace(fString, "{size=2}", "", 1, -1, 1)
fString = replace(fString, "{/size=2}", "", 1, -1, 1)
fString = replace(fString, "{size=3}", "", 1, -1, 1)
fString = replace(fString, "{/size=3}", "", 1, -1, 1)
fString = replace(fString, "{size=4}", "", 1, -1, 1)
fString = replace(fString, "{/size=4}", "", 1, -1, 1)
fString = replace(fString, "{size=5}", "", 1, -1, 1)
fString = replace(fString, "{/size=5}", "", 1, -1, 1)
fString = replace(fString, "{size=6}", "", 1, -1, 1)
fString = replace(fString, "{/size=6}", "", 1, -1, 1)
fString = replace(fString, "{black}", "", 1, -1, 1)
fString = replace(fString, "{/black}", "", 1, -1, 1)
fString = replace(fString, "{red}", "", 1, -1, 1)
fString = replace(fString, "{/red}", "", 1, -1, 1)
fString = replace(fString, "{yellow}", "", 1, -1, 1)
fString = replace(fString, "{/yellow}", "", 1, -1, 1)
fString = replace(fString, "{pink}", "", 1, -1, 1)
fString = replace(fString, "{/pink}", "", 1, -1, 1)
fString = replace(fString, "{green}", "", 1, -1, 1)
fString = replace(fString, "{/green}", "", 1, -1, 1)
fString = replace(fString, "{orange}", "", 1, -1, 1)
fString = replace(fString, "{/orange}", "", 1, -1, 1)
fString = replace(fString, "{purple}", "", 1, -1, 1)
fString = replace(fString, "{/purple}", "", 1, -1, 1)
fString = replace(fString, "{blue}", "", 1, -1, 1)
fString = replace(fString, "{/blue}", "", 1, -1, 1)
fString = replace(fString, "{beige}", "", 1, -1, 1)
fString = replace(fString, "{/beige}", "", 1, -1, 1)
fString = replace(fString, "{brown}", "", 1, -1, 1)
fString = replace(fString, "{/brown}", "", 1, -1, 1)
fString = replace(fString, "{teal}", "", 1, -1, 1)
fString = replace(fString, "{/teal}", "", 1, -1, 1)
fString = replace(fString, "{navy}", "", 1, -1, 1)
fString = replace(fString, "{/navy}", "", 1, -1, 1)
fString = replace(fString, "{maroon}", "", 1, -1, 1)
fString = replace(fString, "{/maroon}", "", 1, -1, 1)
fString = replace(fString, "{limegreen}", "", 1, -1, 1)
fString = replace(fString, "{/limegreen}", "", 1, -1, 1)
fString = replace(fString, "{font=Andale Mono}", "", 1, -1, 1)
fString = replace(fString, "{/font=Andale Mono}", "", 1, -1, 1)
fString = replace(fString, "{font=Arial}", "", 1, -1, 1)
fString = replace(fString, "{/font=Arial}", "", 1, -1, 1)
fString = replace(fString, "{font=Arial Black}", "", 1, -1, 1)
fString = replace(fString, "{/font=Arial Black}", "", 1, -1, 1)
fString = replace(fString, "{font=Book Antiqua}", "", 1, -1, 1)
fString = replace(fString, "{/font=Book Antiqua}", "", 1, -1, 1)
fString = replace(fString, "{font=Century Gothic}", "", 1, -1, 1)
fString = replace(fString, "{/font=Century Gothic}", "", 1, -1, 1)
fString = replace(fString, "{font=Comic Sans MS}", "", 1, -1, 1)
fString = replace(fString, "{/font=Comic Sans MS}", "", 1, -1, 1)
fString = replace(fString, "{font=Courier New}", "", 1, -1, 1)
fString = replace(fString, "{/font=Courier New}", "", 1, -1, 1)
fString = replace(fString, "{font=Georgia}", "", 1, -1, 1)
fString = replace(fString, "{/font=Georgia}", "", 1, -1, 1)
fString = replace(fString, "{font=Impact}", "", 1, -1, 1)
fString = replace(fString, "{/font=Impact}", "", 1, -1, 1)
fString = replace(fString, "{font=Lucida Console}", "", 1, -1, 1)
fString = replace(fString, "{/font=Lucida Console}", "", 1, -1, 1)
fString = replace(fString, "{font=Script MT Bold}", "", 1, -1, 1)
fString = replace(fString, "{/font=Script MT Bold}", "", 1, -1, 1)
fString = replace(fString, "{font=Stencil}", "", 1, -1, 1)
fString = replace(fString, "{/font=Stencil}", "", 1, -1, 1)
fString = replace(fString, "{font=Tahoma}", "", 1, -1, 1)
fString = replace(fString, "{/font=Tahoma}", "", 1, -1, 1)
fString = replace(fString, "{font=Times New Roman}", "", 1, -1, 1)
fString = replace(fString, "{/font=Times New Roman}", "", 1, -1, 1)
fString = replace(fString, "{font=Trebuchet MS}", "", 1, -1, 1)
fString = replace(fString, "{/font=Trebuchet MS}", "", 1, -1, 1)
fString = replace(fString, "{font=Verdana}", "", 1, -1, 1)
fString = replace(fString, "{/font=Verdana}", "", 1, -1, 1) |
|
|
ztuah
Starting Member
6 Posts |
Posted - 27 February 2003 : 03:57:22
|
Hi, I'm trying to do the same as live4offrd. Now, pretend I'm totally ignorant of this software (which I really am), What do I need to alter in lines 874 & 1041 in post_info.asp to enable me to do this? I get the rest of the instructions. Thank you. |
|
|
arup
New Member
United Kingdom
63 Posts |
Posted - 27 February 2003 : 12:44:07
|
change this:-
ProcessSubscriptions rs("MEMBER_ID"), Cat_ID, Forum_ID, NewTopicID, Moderation
to this:-
ProcessSubscriptions rs("MEMBER_ID"), Cat_ID, Forum_ID, NewTopicID, Moderation, txtMessage
on both of those lines in post_info.asp and then in inc_subscriptions.asp change line #40 from:-
sub ProcessSubscriptions (pMemberId, CatID, ForumId, TopicId, Moderation)
to:-
sub ProcessSubscriptions (pMemberId, CatID, ForumId, TopicId, Moderation, txtMessage)
Hope that helps |
|
|
ztuah
Starting Member
6 Posts |
Posted - 28 February 2003 : 01:40:35
|
Hi again. I really appreciate ur support group. ur prompt reply make my life easier. Now, I still cannot get the actual post to be sent to all the members' e-mails. It only inform the members that there is new post. Is there something I overlook? please....help! |
|
|
im_no_scrub
Starting Member
USA
6 Posts |
Posted - 02 March 2003 : 20:08:26
|
I don't allow HTML emails to be sent from my forums, so I've used the following function to strip the HTML from the message rather than convert it:
Function StripHTMLTag(ByVal sText)
StripHTMLTag = ""
fFound = False
Do While InStr(sText, "<")
fFound = True
StripHTMLTag = StripHTMLTag & " " & Left(sText, InStr(sText, "<")-1)
sText = MID(sText, InStr(sText, ">") + 1)
Loop
StripHTMLTag = StripHTMLTag & sText
If Not fFound Then StripHTMLTag = sText
End Function
|
Sincerely, Todd M. Taylor |
|
|
arup
New Member
United Kingdom
63 Posts |
Posted - 03 March 2003 : 10:09:27
|
you need to place the contents of txtMessage in the body of the email, having passed it to the ProcessSubscriptions sub. So in inc_subscriptions.asp find on line #192:-
strMessage = strMessage & "You can view the posting at " & strForumURL & "topic.asp?TOPIC_ID=" & TopicId & vbNewline
and then add the following on the next line:-
strMessage = strMessage & vbNewLine & StripCode(txtMessage)
You will now get the posted message in the email body.
|
|
|
Zenfor
Junior Member
372 Posts |
Posted - 02 April 2003 : 16:37:23
|
This is a great addition but I am having trouble piecing this all together. Does anyone have the entire code change instructions in one place? |
|
|
spyordie007
Junior Member
USA
408 Posts |
Posted - 02 April 2003 : 16:42:17
|
Not that I want to throw a wet towel on your fire but why not just use a list serve to do this?
Better yet a mod that allows your topics to send/recieve e-mail messages and Snitz could become a forum and a list serve that use the same topics?
-Spy |
Power - The only narcotic controlled by the SEC, not the FDA.
Prosperity without pollution! The American Hydrogen Association - http://www.ahanw.org Questions about Hydrogen? Post them on our forum - http://www.ahanw.org/forum |
|
|
Topic |
|
|
|