Web-form til EZMLM mailinglister

Jeg skulle bruge en web-baseret tilmelding til en EZMLM-baseret mailingliste. Det søgte jeg efter højt og lavt, og det eneste jeg reelt set fandt var noget PERL-snask. Så skulle jeg vide hvad stien til PERL var på min server (den var nu nem nok), men jeg skulle også kende stien til qmail. Den gik ikke sådan lige. Det ville også være skønt hvis det udelukkende krævede PHP. Så kunne jeg bedre gennemskue det. Og det fandt jeg - et nydeligt lille script, der kunne administrere det hele. Men igen - jeg skulle kende stien til qmail.

Nå, men hvad så med bare at lade formularen sende en mail? Det er løsningen, men det er ikke sådan en pose bare-lige.

Når man sender en mail til en EZMLM-baseret mailingliste sender man en tom mail til: listenavn-subscribe@domæne.xy Modtageradressen aflæser så hvilken mailadresse der sender forespørgslen og returnerer et svar, som man blot skal sende tilbage igen (Reply'e) for at sige "jojo, det ER mig der vil tilmeldes mailinglisten". Så det satte jeg min form op til at gøre. Intet skete. Overhovedet.

Hm. Fejlfinding. Kan den sende til en anden mailadresse? Jow, det gik fint. Nå. Så måtte jeg søge videre. Og til sidst fandt jeg løsningen. I stedet for at lege almindelig mail, skulle jeg tænke situationen at jeg skulle tilmelde en ANDEN mail end den jeg sender fra.

Det betyder, at der skal sendes til en mailadresse på formen: [listenavn]-subscribe-[og her står så den mail der skal tilmeldes]@osv. Det skarpe øje vil se, at der står en mailadresse som en del af mailadresen. Det betyder 2 @'er. Den går ikke Granberg. Det er der heldigvis råd for, vi laver nemlig bare @'et fra den adresse der skal tilmeldes om til et =.

For at tilmelde mail@nytdomæne.zp til listen "listenavn" skal min til-adresse se således ud: listenavn-subscribe-mail=nydomæne.zp@domæne.xy Det er jo en simpel opgave - det er bare en søg-og-erstat. I PHP hedder det str_replace.

Formularen består af ét felt - det hvor man indtaster sin e-mailadresse. Og så af en "Send"-knap. Ovenstående kan sammenfattes som (koden kan nemt gøres kønnere, men det må du selv rode med):

<?php
$form_block
="
<form action="
\" method="POST">
  <input name="
\" value="\" type="\">
<table class="
\" cellpadding="\" cellspacing="\">
<tbody>
<tr>
<td class="
\">Nyhedsmail</td>
</tr>
<tr>
<td class="
\">Skriv din e-mail</td>
</tr>
<tr>
<td class="
\"><input class="\" name="\" size="\" value="\" type="\"></td>
</tr>
<tr>
<td class="
\">
<div><input class="
\" name="\" value="\" type="\"></div>
</td>
</tr>
</tbody>
</table>
</form>
"
;
if (
$udfyldt=="ja")
{
 
mail("listenavn-subscribe-".str_replace("@","=",$mail)."@domæne.xy","","","From: $mail\r\n");
  echo
"Svar på den mail du får tilsendt";
  exit;
}
else
{
/* Formularen er ikke udfyldt og skal derfor vises */
 
echo "$form_block\n";
}
?>