E-Mailversand funktioniert nicht

kekskruemel

Angesehenes Mitglied
Ich habe folgende Datei mit php Inhalt geschrieben. Diese nutze ich ohne Veränderung seit langem. Doch ich war dann mal auf einen neuen Anbieter (Strato) gewechselt und seit dem funktioniert es nicht mehr. Dasselbe auch bei einer Registrierungsdatei und da habe ich auch festgestellt, dass es erst dann wieder geht, wenn ich den Mailversand ausklammere.

Es muss also - so denke ich - daran liegen. Doch ich finde keinen Fehler. Es lief früher ja auch einmal. Ich denke daher, dass es eher an einer Einstellung auf meinem Strato VServer liegt oder dass dort eine neuere php version installiert ist, die das nicht mehr beinhaltet. (http://tankcheck.de/phpinfo.php)
CODE <?php
session_start();
include('global.php');
$content = "";
//////////////////////////////////////////
//Kontrolle ob eingeloggt oder nicht wegen SPAM-Captcha
//////////////////////////////////////////
if($_SESSION['level'] <> "0")
{
 $spam = "true";
}
else
{
 if(@$_POST['spam'] == $_SESSION['bg'])
 {
   $spam = "true";
 }
 else
 {
   $spam = "false";
 }
}

//////////////////////////////////////////
//Beginn Mailerstellung und Versand
//////////////////////////////////////////
if((@$_GET['mail'] == "true") AND ($_POST['sender_name'] <> "") AND ($_POST['sender_email'] <> "") AND ($_POST['contact_betr'] <> "") AND ($_POST['contact_text'] <> "") AND ($spam == "true"))
{  
 $text     = $_SERVER['REQUEST_URI'];
 $treffer  = strrchr($text, '/');
 $pfad     = str_replace($treffer, '', $text);
 $server   = "<img src='http://".$_SERVER['HTTP_HOST'].$pfad."/img/logo.gif'>";
 $timestamp = time();
 $datum = date("d.m.Y",$timestamp);
 $uhrzeit = date("H:i:s",$timestamp);

 $sender_name     = $_POST['sender_name'];
 $sender_email    = $_POST['sender_email'];

 $this->tmp_file = TEMPLATE_DIR."/email/".$_SESSION['sess_lang']."_kontakt.html";
 $this->error = $lang['msg_no_template'];
 $this->content = "";
 $file = @fopen($this->tmp_file, "r");
 if(!$file)
  {
  echo $this->error;
  }
  else
  {
  while(!feof($file))
   {
   $temp = fgets($file, 4096);
   $this->content .= $temp;
   }
  }
 $this->content = str_replace("{server}", $server, $this->content);
 $this->content = str_replace("{sender_name}", $sender_name, $this->content);
 $this->content = str_replace("{sender_email}", $sender_email, $this->content);
 $this->content = str_replace("{lang_betreff}", $lang['contact_betr'], $this->content);
 $this->content = str_replace("{betreff}", $_POST['contact_text'], $this->content);
 $this->content = str_replace("{lang_text}", $lang['contact_text'], $this->content);
 $this->content = str_replace("{contact_text}", $_POST['contact_text'], $this->content);
 $this->content = str_replace("{time}", $datum." - ".$uhrzeit, $this->content);

 $adresse  = $sender_email;
 $adresse1 = $contact_mail;
 $betreff  = $lang['contact_mail_betr']."(".$datum." / ".$uhrzeit.")";
 $betreff1 = "Kontaktaufnahme von ".$sender_name." (".$sender_email.")";
 $inhalt   = $this->content;
 $header   = "From: <".$contact_mail.">\r\n";
 $header  .= "Content-Type:text/html\r\n";
 $mail     = @mail($adresse,$betreff,$inhalt,$header);
 $mail1    = @mail($adresse1,$betreff1,$inhalt,$header);
 
 if(($mail) && ($mail1))
  {
  $msg = $lang['msg_mail_ok'];
  }
 elseif((!$mail) OR (!$mail1))
  {
   $msg = $lang['msg_mail_false'];
  }
}
elseif((@$_GET['mail'] == "true") AND (($_POST['sender_name'] == " ") OR ($_POST['sender_email'] == "") OR ($_POST['contact_betr'] == "") OR ($_POST['contact_text'] == "") OR $spam = "false") )
{
 $_SESSION['sess_contact_betr'] = @$_POST['contact_betr'];
 $_SESSION['sess_contact_text'] = @$_POST['contact_text'];
 $msg = $lang['msg_mail'];
}

//////////////////////////////////////////
//Ende Mailerstellung und Versand
//////////////////////////////////////////


//////////////////////////////////////////
//Beginn Kontaktformular
//////////////////////////////////////////
$content .= "<table><form method=post action='kontakt.php?mail=true'><div class=head>".$lang['contact']."</div><br>";
$content .= "<tr><td colspan=2>".$lang['name'].": <br><input type=text name=sender_name size=30 value='".@$_SESSION['sess_user_vorname']." ".$_SESSION['sess_user_name']."'></td></tr>";
$content .= "<tr><td colspan=2>".$lang['email'].": <br><input type=text name=sender_email size=30 value='".@$_SESSION['sess_user_email']."'></td></tr>";
$content .= "<tr><td colspan=2>".$lang['contact_betr'].": <br><input type=text name=contact_betr size=30 value='".@$_SESSION['sess_contact_betr']."'></td></tr>";
$content .= "<tr><td colspan=2>".$lang['contact_text'].": <br><textarea name=contact_text rows=10 cols=35>".@$_SESSION['sess_contact_text']."</textarea></td></tr>";

// SPAM SCHUTZ BILD DA, WENN USER NICHT EINGELOGGT
if($_SESSION['level'] <> "0") $content .= "";
else $content .= "<tr><td width=90px>".$lang['sicherheit'].":<br><img src='bild.php'></td><td valign=bottom align=left><input type=text maxlength=5 size=5 name=spam></td></tr>";
//ENDE SPAM SCHUTZ

$content .= "<tr><td><button name=weiterleitung type=submit class='Button'> ".$lang['senden']."</button></td></tr></form></table>";
//////////////////////////////////////////
//Ende Kontaktformular
//////////////////////////////////////////

// Klasse hinzuladen
include("template.class.php");

// Objekt erzeugen ($error wird bereits im Konstrukt definiert und ist hier nur optional)
$template = new template("template/home.html");
// Datei einlesen
$template->readtemplate();
// Platzhalter ersetzen
$template->replace("title", $lang['kontakt_title']);
$template->replace("meta", $lang['kontakt_meta']);
include('footer.php');
?>
 
Ich dachte mir nun, dass ich es dann eben mit dme phpmailer versuche.
Also habe ich den phpmailer als Ordner bei mir in meinen httpdocs geschoben und dir kontakt.php was den Mailversand angeht bearbeitet:
CODE
session_start();
include('global.php');
set_include_path(get_include_path() . PATH_SEPARATOR . "/phpmailer/");
$content = "";
//////////////////////////////////////////
// Kontrolle ob eingeloggt oder nicht wegen SPAM-Captcha
//////////////////////////////////////////

...

//////////////////////////////////////////
// Beginn Mailerstellung und Versand
//////////////////////////////////////////
if((@$_GET['mail'] == "true") AND ($_POST['sender_name'] <> "") AND ($_POST['sender_email'] <> "") AND ($_POST['contact_betr'] <> "") AND ($_POST['contact_text'] <> "") AND ($spam == "true"))
{
//////// PHPMAILER

require_once 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->SetLanguage ("de", "./phpmailer/language/");
$mail->IsSMTP();
$mail->Host = "Webseite";
$mail->SMTPAuth = true;
$mail->Username = "info@webseite.de";
$mail->Password = "LaLaLa";

$text = $_SERVER['REQUEST_URI'];
$treffer = strrchr($text, '/');
$pfad = str_replace($treffer, '', $text);
$server = "<img src='http://".$_SERVER['HTTP_HOST'].$pfad."/img/logo.gif'>";
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i:s",$timestamp);

$sender_name = $_POST['sender_name'];
$sender_email = $_POST['sender_email'];
$tmp_file = TEMPLATE_DIR."/email/".$_SESSION['sess_lang']."_kontakt.html";
$error = $lang['msg_no_template'];

$file = @fopen($tmp_file, "r");
if(!$file)
{
echo $error;
}
else
{
while(!feof($file))
{
$temp = fgets($file, 4096);
$content .= $temp;
}
}

$content = "";
$content = str_replace("{server}", $server, $content);
$content = str_replace("{sender_name}", $sender_name, $content);
$content = str_replace("{sender_email}", $sender_email, $content);
$content = str_replace("{lang_betreff}", $lang['contact_betr'], $content);
$content = str_replace("{betreff}", $_POST['contact_text'], $content);
$content = str_replace("{lang_text}", $lang['contact_text'], $content);
$content = str_replace("{contact_text}", $_POST['contact_text'], $content);
$content = str_replace("{time}", $datum." - ".$uhrzeit, $content);

//Absenderadresse der Email setzen
$mail->From = $sender_email;
//Name des Abenders setzen
$mail->FromName = $sender_name;
//Empfängeradresse setzen
$mail->AddAddress($contact_mail);
//Betreff der Email setzen
$mail->Subject = "Kontaktaufnahme von ".$sender_name." (".$sender_email.")";
$mail->IsHTML(true);
//Text der EMail setzen
$mail->Body = $content;

//EMail senden und überprüfen ob sie versandt wurde
if(!$mail->Send())
{
$msg = $lang['msg_mail_false'];
echo "Fehler: ".$mail->ErrorInfo;
}
else
{
$msg = $lang['msg_mail_ok'];
}

/////// PHPMAILER ENDE




Dabei habe ich nun aber folgenden Fehler in meiner Error-Log-Datei:
Failed opening required 'class.phpmailer.php' (include_path='.:/usr/share/php5:/usr/share/php5/PEAR:/phpmailer/')
 
Failed opening required 'class.phpmailer.php' (include_path='.:/usr/share/php5:/usr/share/php5/PEAR:/phpmailer/')

klingt nach fehlender datei bzw falschem pfad, oder die datei hat die falschen rechte
 
QUOTE (Wasi @ Do 4.11.2010, 03:06)Warum nutzt du nicht einfach die PHP Funktion mail()?


Aus dem 1. Quelltext:

$mail = @mail($adresse,$betreff,$inhalt,$header);
$mail1 = @mail($adresse1,$betreff1,$inhalt,$header);

Aber die mail-Funktion kann auch nur funktionieren, wenn der darunter liegende MTA des vServers richtig konfiguriert wurde.

Dazu hat kekskruemel ja bisher nichts erzählt...

Also:

Funktioniert denn der Mailversand direkt von der shell aus?

 
Zurück
Oben