mailfunction

DerBär

Erfahrenes Mitglied
Hallo ans Forum
Ich hoffe es findet sich jemand der mir helfen kann.
Mit folgendem Script können sich Besucher auf unserer Site registrieren lassen.
Klappt auch soweit alles ohne Probleme, auser das die Mail Function nicht klappt.
Ich krieg kein Mail wen der db Eintrag erfolgt ist.


<?php

include("db_func.inc.php");
$titel="Mitglieder_Eingabe";
include("meta.php");


echo"<div id=\"Layer1\" style=\"position:absolute; left:0px; top:20px; width:661px; height:245px; z-index:1; overflow: auto; scrollbar-base-color: #563C23; scrollbar-highlight-color: #996633; scrollbar-arrow-color: #CC9966; scrollbar-shadow-color: #40001F; scrollbar-track-color: #333333\">\n";



#Hier wird in die DB eingetragen

function eintrag_db(){
global $Vorname,$Nick,$Name,$EmailA,$Orga,$Adresse,$Selbst,$Pass,$Mitglied,$table,$db,$Send,$an,$betreff,$text,$von,$location,$member;

if(!mysql_db_query($db,"insert into $table values('','$Mitglied','$Name','$Vorname','$Nick','$EmailA','$Orga','$Adresse','$Selbst','$location','$Pass')"))
{
echo mysql_errno();
echo mysql_error();
}
else{

echo"<p align=\"center\"><font size=\"2\">Willkommen im Club ".$Vorname." ".$Nick." ".$Name."<br>Deine Mitgliedschaft wird in den nächsten Tagen aktiviert.\n";
echo"<form name=\"back\" method=\"post\" action=\"members.php\">\n";
echo"<p align=\"center\"><input type=\"submit\" name=\"back\" value=\"Zur&uuml;ck zur Mitgliederliste\" class=\"knopf\"></form></p>\n";

# Hier die mail Function die nicht klappt.

$an="hier die email";
$betreff="Neues Mitglied";
$von=$Vorname." ".$Nick." ".$Name;
$text=$Vorname." ".$Nick." ".$Name." hat die Mitgliedschaft beantragt\n";
mail($an,$betreff,$text,"From: ".$von."<".$EmailA.">");

unset($Send);
$Name="";
$Vorname="";
$Nick="";
$EmailA="";
$Orga="";
$Adresse="";
$Selbst="";


}

}
if($Send)
eintrag_db();
echo"<form name=\"mailformular\" method=\"post\" action=\"$PHP_SELF\" enctype=\"multipart/form-data\" >\n";
echo" <table width=\"640\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"table\">\n";
echo"<tr>\n";
echo"<td width=\"197\">\n";
echo"<div align=\"right\">* Name: \n";
echo"<input type=\"text\" name=\"Name\" value=".$Name.">\n";
echo"</div>\n";
echo"</td>\n";
echo"<td width=\"232\">\n";
echo"<div align=\"right\">* Nick: \n";
echo"<input type=\"text\" name=\"Nick\" value=".$Nick.">\n";
echo"</div>\n";
echo"</td>\n";
echo"<td width=\"228\">\n";
echo"<div align=\"right\">* Vorname: \n";
echo"<input type=\"text\" name=\"Vorname\" value=".$Vorname.">\n";
echo"</div>\n";
echo"</td>\n";
echo"</tr>\n";
echo"<tr>\n";
echo"<td width=\"197\">\n";
echo"<div align=\"right\">* E-Mail: \n";
echo"<input type=\"text\" name=\"EmailA\" value=".$EmailA.">\n";
echo"</div>\n";
echo"</td>\n";
echo"<td width=\"232\">\n";
echo"Organisation: <input type=\"text\" name=\"Orga\" value=".$Orga.">\n";

echo"</td>\n";
echo"<td width=\"228\">\n";
echo"Adresse: <input type=\"text\"name=\"Adresse\"value=".$Adresse.">\n";

echo"</td>\n";
echo"</tr>\n";
echo"<tr>\n";
echo"<td width=\"197\">\n";
echo"</td>\n";
echo"<td width=\"232\">\n";
echo"Passwort: <input type=\"password\" name=\"Pass\">\n";

echo"</td>\n";
echo"<td width=\"228\">\n";
echo"</td>\n";
echo"</tr>\n";
echo"<td colspan=\"3\">\n";
echo"<textarea name=\"Selbst\" cols=\"77\" class=\"table\" rows=\"3\" >$Selbst</textarea>\n";
echo"</td>\n";
echo"</tr>\n";
echo"<tr>\n";
echo"<td colspan=\"3\"align=\"center\">\n";
echo"<input type=\"file\" name=\"uploadfile\" class=\"knopf\">\n";
echo"</td>\n";
echo"</tr>\n";
echo"<tr>\n";
echo"<td colspan=\"3\">\n";
$Mitglied="no";
echo"<input type=\"hidden\" name=\"Mitglied\" value=\"no\">\n";
echo"</td>\n";
echo"</tr>\n";
echo"</table>\n";
echo"<p align=\"center\"><input type=\"submit\" name=\"Send\" value=\"Antrag absenden\" class=\"knopf\"><br></p>\n";
echo"</form>\n";
echo"</div>\n";

?>


need help
 
-

PHP:
global $Vorname,$Nick,$Name,$EmailA,$Orga,$Adresse,$Selbst,$Pass,$Mitglied,$table,$db,$Send,$an,$betreff,$t
ext,$von,$location,$member;
Zu viele globale Variablen machen dein Script langsam. Wieso übergibst du die Variablen nicht an die Funktion. Sieht besser aus und ist von der Geschwindigkeit her, akzeptabler.

PHP:
mail($an,$betreff,$text,"From: $von <$EmailA>");
Versuchs mal so.
 
der mail-Befehl funktioniert nur dann, wenn auf Deinem Webserver der sendmail-Dienst läuft und richtig konfiguriert ist.

evtl. mal beim Hoster nachfragen ;)


Dunsti
 
thx für eure tipps
muß wohl irgendwie am webserver liegen

lokal läuft mein script ja ohne probs (apache) aber wen ich das script
hochlade funkioniert die mail function nur wen ich
ohne variablen arbeite also
mail("meine@email.org","Testsubject,"Testmessage");
nur wen ich das mailform mit variablen versenden will
if($send){
$to="meine@email.org";
$subject="Neues Mitglied";
$message=$Nick." hat die Mitgliedschaft beantragt\n";
mail($to,$subject,$message);
}
krieg ich einen error in der Zeile mail($to,$subject,$message);

wen ich mir die variablen per echo ausgeben lasse hab ich sie aber genau so wie sie sein sollen
:(

also wen euch noch was einfällt bitte melden.
hab die befürchtung das bei meinem provider (webjansen) nicht so ganz
die auskenner sitzen.
 
Meiner Meinung nach haben die Leute hier schon Recht ;) dein Script ist viel zu kompliziert.

Schreibe doch deine Mailverarbeitung in eine Funktion und nutze zum auslesen der Daten die Variable HTTP_POST_VARS.

Kleines Bsp:

Code:
if ( $status == "true" ) {

function build_mail ( ) {
  global $HTTP_POST_VARS;

  $to = "meine@emailadresse.de";
  $subject = "Neue Email";
  $from = $HTTP_POST_VARS[Email];

  $msg = "Name: ".$HTTP_POST_VARS[Name]."\n";
  $msg.= "Vorname: ".$HTTP_POST_VARS[Vorname]."\n";
  $msg.= "Email: ".$HTTP_POST_VARS[Email]."\n";
  $msg.= "Phone: ".$HTTP_POST_VARS[Phone]."\n";

  if ( mail ( $to, $subject, $msg ) ){
    return true;
  else {
    return false;
  }
}

if ( build_mail () ) {
  echo "Email wurde versendet!";
}
else {
  echo "Fehler!"
}

}
else {

<form action="<?php echo $PHP_SELF ?>" method="post">
<input type="hidden" name="status" value="true">
Name: <input type="text" name="Name"><br>
Vorname: <input type="text" name="Vorame"><br>
Email: <input type="text" name="Email"><br>
Phone: <input type="text" name="Phone"><br>
<input type="Submit" value="Weg">

}



Script ist ungetestet.
Gruß
Rene
 
Zuletzt bearbeitet:
welchen Fehler bekommst Du denn genau?

soweit ich weiß hat die mail-Funktion vier Parameter, Du gibst aber nur drei an. Vielleicht liegts daran. ;)


Dunsti
 
THX für Deine (Eure) Mühe
aber es klappt jetzt.
mail ( "$to", "$subject", "$message" ) ;
Bitte nicht lachen aber das klappt tatsächlich???:)

@Dunsti der 4 Parameter ist der From. aber der klappt bei meinem Anbieter nicht weil er das gar ncht zu läßt.
alle mails kommen an nur halt beim Absender
hab ich jetzt halt immer
"bv@janssen-s1.de" :#
stehen. Aber damit kann ich fürs erste mal leben.;-)
 
Der 4. Parameter ist nicht der Form, sondern die Header Information.

In dem kannst du BCC, CC, X-Mailer, Reply Pfad usw. festlegen. Das würde dann so aussehen:

$to = "fatility@gmx.net";
$subject = "Webmail";
$message = "Hier steht dann der Text";
$head = "From: ".$Email."\nReply-To: ".$Email."\nX-Mailer: PHP ".phpversion();

mail ( $to, $subject, $message, $head);

Grüße
Fati
 
Wie ich sehe, bist Du bei Uwe Janssen, das ist ein Windows-Server(Microsofts letzte Rache) hier ist MySQL in verbindung mit asp angebrachter da schneller verarbeitet wird als PHP. Glaube mir, ich bin auch noch dort. Das liegt anscheinend am janssen-server. So um wirklich helfen zukönnen:

Mails auch ohne "mail"

---Code---

function sendmail($mailto, $mailfrom, $nameto, $namefrom, $replyto, $subject, $text)
{
$smtpserver = "smtp.domainname.de";

$hdr = "From: $namefrom <$mailfrom>\r\n";
$hdr .= "To: $nameto <$mailto>\r\n";
$hdr .= "Reply-To: $namefrom <$replyto>\r\n";
$hdr .= "Subject: $subject\r\n";
$hdr .= "\r\n";

# Socket oeffnen.
$fp = fsockopen("$smtpserver", 25);
$banner = fgets($fp, 1024);

# MAIL FROM
fputs($fp, "MAIL FROM: $mailfrom\r\n");
$result = fgets($fp, 1024);
//if ($result+0 != 250)
// die("MAIL FROM Statuscode falsch: $result");

# RCPT TO
fputs($fp, "RCPT TO: $mailto\r\n");
$result = fgets($fp, 1024);
//if ($result+0 != 250)
// die("RCPT TO: Statuscode falsch: $result");

# DATA
fputs($fp, "DATA\r\n");
$result = fgets($fp, 1024);
//if ($result+0 != 354)
// die("DATA: Statuscode falsch: $result");

# Header senden
fputs($fp, $hdr);

# Text senden
fputs($fp, "$text\r\n");

# .
fputs($fp, ".\r\n");
$result = fgets($fp, 1024);
//if ($result+0 != 250)
// die("DATA(end): Statuscode falsch: $result");

# QUIT
fputs($fp, "QUIT\r\n");
$result = fgets($fp, 1024);

}

---Ende Code---

Gruß MasterNemo
 

Neue Beiträge

Zurück