PHP
Von: Βаѕtі (abgemeldet), 26.12.2006 22:45 Uhr
In meiner Webseit ist eine E-Mail Funktion integriert mit der ein User seine E-Mail bestätigen soll. Die E-Mail funktion läuft über PHPMailer. Ich bekomme zwar von der Website die Meldung das die Email verschickt wurde, doch sie kommt nicht an. Muss ich in der class.phpmailer.php irgendetwas einstellen?
Auch wenn ich über das Admin-Menü Emails an User schicken möchte bekomme ich die Meldung das die Email gesendet wurde, aber auch da kommen sie nicht an.
Hier mal die confirm_email.php:

<?php
include("include/config.php");
session_start();
include("include/function.php");
error_reporting(E_ALL);

if($_REQUEST[vcode]!="")
{
$sql="select * from verify as v,signup as s WHERE v.vcode='$_REQUEST[vcode]' and v.UID=s.UID";
$rs=$conn->execute($sql);

if($rs->recordcount()==0){
$err="Invalid Verification code!";
}
else
{
$sql="update signup set emailverified='yes' where UID=".$rs->fields[UID];
$conn->execute($sql);

SESSION_REGISTER("UID");$_SESSION[UID]=$rs->fields[UID];
SESSION_REGISTER("EMAIL");$_SESSION[EMAIL]=$rs->fields[email];
SESSION_REGISTER("USERNAME");$_SESSION[USERNAME]=$rs->fields[username];
SESSION_REGISTER("EMAILVERIFIED");$_SESSION[EMAILVERIFIED]="yes";

if(mysql_affected_rows()>=1){
$msg="Your email has been successfully verified.";
}
else{
$msg = "Your email is already verified";
}
}
}

if($_REQUEST[action_send]!="")
{
$ran=time().rand(1,99999999);
$sql="update verify as v, signup as s set
v.vcode='$ran',
s.emailverified='no' WHERE v.UID=s.UID and v.UID=$_SESSION[UID]";
$conn->execute($sql);
STemplate::assign('vcode',$ran);

$to=$_SESSION[EMAIL];
$name=$config['site_name'];
$from=$config['admin_email'];

$rs = $conn->execute("select * from emailinfo where email_id='verify_email'");
$subj = $rs->fields['email_subject'];
$email_path = $rs->fields['email_path'];
$mailbody=STemplate::fetch($email_path);

mailing($to,$name,$from,$subj,$mailbody);
session_to_db();
$msg = "A verification email is sent to your address. Please check your email.";
}



STemplate::assign('err',$err);
STemplate::assign('msg',$msg);
STemplate::display('head1.tpl');
STemplate::display('err_msg.tpl');
STemplate::display('confirm_email.tpl');
STemplate::display('footer.tpl');
?>

Und diese Meldungen kommen kommen vom error_reprting:

Notice: Use of undefined constant vcode - assumed 'vcode' in /home/web007/public_html/confirm_email.php on line 7

Notice: Undefined index: vcode in /home/web007/public_html/confirm_email.php on line 7

Notice: Use of undefined constant action_send - assumed 'action_send' in /home/web007/public_html/confirm_email.php on line 34

Notice: Use of undefined constant EMAIL - assumed 'EMAIL' in /home/web007/public_html/confirm_email.php on line 43

Notice: Use of undefined constant EMAILVERIFIED - assumed 'EMAILVERIFIED' in /home/web007/public_html/include/function.php on line 43

Notice: Undefined variable: err in /home/web007/public_html/confirm_email.php on line 59

Ich habe von sowas nicht viel Ahnung und weiß nicht wo ich den Fehler suchen soll oder ob ich irgendwo noch was einstellen muss...



  1. Antwort von RаkоnDаrk (abgemeldet) 0
    Re: Emailversand aus PHP funktioniert nicht
    Hallo

    Mach mal deine
    include/config.php auf
    und schreib da deine Hostdaten rein , über wehn du deine email versenden möchtest. Weil selbst wenn es sendet. Da du keine Domain hast, bist du kein annerkannter MX und somit fliegen deine Emails in die nächste Spam vernichtungs maschine.

    Also Irgentwo in deinem Config File muss du ein SMARTHOST eintragen pluss user und passwort, worüber dann dein server senden kann.
    ODer wenn du Provider hast und domain ok, dann den Pfad zum sendmail angeben, bzw einfach mal dein Provider Support fragen (email) der weiss bestimmt welche Daten benötigt werden um emails per HP senden zu können.
    1 Kommentare
    • von Βаѕtі (abgemeldet) 0
      Re^2: Emailversand aus PHP funktioniert nicht
      Hallo,

      ich habe eine Domain. In meiner Config.php wird auf den phpmailer verwiesen. Das sieht so aus:

      require_once($config[BASE_DIR].'/smarty/libs/Smarty.class.php');
      require_once($config[BASE_DIR].'/classes/mysmarty.class.php');
      require_once($config[BASE_DIR].'/classes/SConfig.php');
      require_once($config[BASE_DIR].'/classes/SError.php');
      require_once($config[BASE_DIR].'/include/adodb/adodb.inc.php');
      require_once($config[BASE_DIR].'/include/phpmailer/class.phpmailer.php');
      require_once($config[BASE_DIR].'/classes/SEmail.php');

      Und hier mal die SEmail.php:

      class SEmail {

      function send($address_to, $subject, $htmlcontent, $plaincontent, $attachment) {
      global $admin_name, $admin_email;
      $PHPMailer = new PHPMailer;
      $PHPMailer->From = $admin_email;
      $PHPMailer->FromName = $admin_name;
      $PHPMailer->ClearAllRecipients();
      $PHPMailer->AddAddress($address_to);
      $PHPMailer->Subject = $subject;
      $PHPMailer->Body = $htmlcontent;
      $PHPMailer->AltBody = $plaincontent;
      $PHPMailer->IsHTML(true);
      while(list($k,$v) = each($attachment))
      {
      $PHPMailer->AddAttachment($v['file'],$v['nickname']);
      }
      $status = @$PHPMailer->Send();
      $PHPMailer->ClearAddresses();
      $PHPMailer->ClearAttachments();
      return $status;
      }
      }
      ?>

      In der class.phpmailer.php ist der Pfad zum Sendmail richtig angegeben
      ,daran sollte es also nicht liegen.
      Kann es was damit zu tun haben das ich über Cpanel weitere Emailaccounts hinzugefügt habe? Ganz am Anfang ging die Email-Funktion nämlich. Aber das hat ja eigentlich nichts miteinander zu tun,oder?