nun ich habe ein eigenes kleines CMS entwickelt und musste dort einige Anpassungen machen, somit wurde auch das E-mailsystem überarbeitet.
Jetzt bin ich seit vorgestern bereits den Fehler am suchen denn mein eingebauter PHPmailer 5.2.7 sendet von meiner XAMPP Installation oder auch von beiden meiner Rootserver (Webspace) die E-Mails doppelt...
Also das Script hat einen eingetragenen SMTP Server (vom Webspace auf einem meiner Server) von wo aus die E-mails gesendet werden, so und egal wo ich das script installiere (also mein CMS ob lokal oder aufm Server) die E-mails werden doppelt gesendet.
Das Script habe ich schon gründlich debuggt und in seine Einzelteile zerlegt aber leider ohne Erfolg, heute habe ich dieses nem Kumpel gesendet welcher das Script auf seiner lokalen Maschine unter "Parallels mit Debian 7" installierte und hier der Fehler seltsamer weise nicht aufgetreten ist dann hat er es auf seinem vServer installiert und wieder war vom Fehler keine Spur.
Somit vermute ich dass das Script wohl nicht das Problem ist sondern meine Serverkonfiguration und hier könnt ihr mir sicher am besten weiter helfen und hoffe ihr habt da ein paar Vorschläge für mich! Noch als informationen, bei ALLEN tests auch bei seinen instalaltionen wurde immer mein SMTP-Server verwendet (immer der gleiche), somit kann man wohl auch den Fehler nicht am STMP vermuten zumal das alte E-mailscript auch funktionierte und nur 1 E-mail sendete und nicht zwei.
Nun ich vermute mal ihr benötigt trotzdem noch mein PHP-Script um evtl. zu vermuten wo der Fehler sein könnte und am ende folgen auch alle phpinfo(); Informationen. Bitte berücksichtigt dass das Script eigentlich nicht statisch ist, habe diese Klasse nur zum Debuggen gebaut und die mailvars() Funktion stammt auch aus altn Zeiten und wird noch überarbeitet werden sobald es wieder läuft =)
Mail-Daten und an Funktion übergeben:
Code: Select all
ClassFactory::init('mail', 'fw');
$mailvars = array(
'greeting' => $wwm->trans('global', 'Dear'),
'salutation' => 'Herr',
'firstname' => 'Vorname',
'lastname' => 'Nachname',
'title' => $wwm->trans('plug_auth', 'Activate your new passwörd'),
'email' => 'email4@gmx.de',
'token' => 'ioufo72h043f742',
'pass' => '12345678',
'SSL' => Func::getHost(),
'rel_uri' => REL_URI,
);
mail::send('auth_newpassword', 1, $mailvars, 'Vorname_Nachname@gmx.de', 'Vorname Nachname');
E-Mail Klasse (bereitet die Daten auf und sendet sie letztendlich an den PHPmailer)
Code: Select all
<?php
class mailCore
{
public static function send($thismail, $priority, $mailvars, $to, $toname, $file = NULL, $filename = NULL)
{
// here can set path to mail Templates (use on cronjobs or sent to different user as online) else we use the session from user
$iso = explode('-', $_SESSION['wwm']['sett']['useriso']); // Sprache des users
$maillang = ( isset($mailvars['lang']) ) ? $mailvars['lang'] : $iso[0];
// Load Mailer and create new instance
require_once(BASE_URI.'fw/mailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->isSMTP();
// Set a priority of this mail 1 = high, 3 = Normal, 5 = low
$mail->Priority = $priority;
// Specify the send server
$sendServer = self::sendas( $thismail ); // this func find correct server automatically
if( sett::$_['mail_sendsrv'] != 'php' AND is_array($sendServer) )
{
$mail->Host = $sendServer['mainsrv'].";".$sendServer['baksrv']; // specify main and backup server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->SMTPSecure = $sendServer['secure']; // '', 'ssl' or 'tls'
$mail->Port = $sendServer['port']; // Port
$mail->Username = $sendServer['username']; // Username
$mail->Password = $sendServer['password']; // Password
}
else
{
$mail->Host = 'localhost';
$mail->SMTPAuth = false;
}
$mail->From = $sendServer['address'];
$mail->FromName = $sendServer['name'];
// Add a recipient
$mail->AddAddress($to, $toname);
// set word wrap to 50 characters
$mail->WordWrap = 50;
// Attachment
if( $file != NULL )
{
$mail->AddAttachment($file, $filename); // $filename is Optional
}
// Send the system E-mails as html?
$mail->IsHTML( (sett::$_['mail_sendhtml']) ? true : false );
// Add subject
$mail->Subject = $mailvars['title'];
// Create content of E-Mail
$mail->Body = self::MailVars('body', $mailvars, $thismail, $maillang);
// Send the System html E-Mails can optional add a text variant and if user see not html can switch to a text version
if( sett::$_['mail_sendhtml'] AND sett::$_['mail_txtonhtml'] ){ $mail->AltBody = self::MailVars('altbody', $mailvars, $thismail, $maillang); }
// now send
if( !$mail->Send() ){
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}else{
echo 'Message has been sent. ';
}
}
private static function MailVars( $type, $mailvars, $content, $maillang) // Replace
{
$settarr = array(
'HTTP_HOST' => $_SERVER['HTTP_HOST'],
'thcolor' => $_SESSION['sett']['generally']['mail']['thcolor'],
'thtxtcolor' => $_SESSION['sett']['generally']['mail']['thtxtcolor'],
'lnkcolor' => $_SESSION['sett']['generally']['mail']['lnkcolor'],
'bordercolor' => $_SESSION['sett']['generally']['mail']['bordercolor'],
'fotco' => 'Re'.'al'.'i'.'ze'.'d wi'.'th '.'<'.'a '.'hr'.'ef'.'="'.'h'.'t'.'t'.'p'.':'.'/'.'/'.'w'.'w'.'w'.'.'.'g'.'f'.'w'.'2'.'d'.'a'.'y'.'.'.'c'.'o'.'m"'.'>g'.'f'.'w'.'2'.'d'.'a'.'y.'.'c'.'o'.'m<'.'/'.'a> - F'.'r'.'a'.'m'.'e'.'w'.'o'.'r'.'k / C'.'M'.'S',
'altfotco' => 'Re'.'al'.'i'.'ze'.'d wi'.'th : w'.'w'.'w.'.'g'.'f'.'w'.'2'.'d'.'a'.'y.'.'c'.'o'.'m - F'.'r'.'a'.'m'.'e'.'w'.'o'.'r'.'k / C'.'M'.'S',
'impress_company' => $_SESSION['sett']['generally']['impress']['company'],
'impress_owner' => $_SESSION['sett']['generally']['impress']['owner'],
'impress_street' => $_SESSION['sett']['generally']['impress']['street'],
'impress_city' => $_SESSION['sett']['generally']['impress']['city'],
'impress_ustid' => $_SESSION['sett']['generally']['impress']['ustid'],
'impress_tel' => $_SESSION['sett']['generally']['impress']['tel'],
'impress_fax' => $_SESSION['sett']['generally']['impress']['fax'],
'impress_email' => $_SESSION['sett']['generally']['impress']['email']
);
if( $type == 'body' )
{
$ext = (sett::$_['mail_sendhtml']) ? '.html' : '.txt';
$body = file_get_contents(BASE_URI.'app/translations/'.$maillang.'/mails/header'.$ext);
$body .= file_get_contents(BASE_URI.'app/translations/'.$maillang.'/mails/'.$content.$ext);
$body .= file_get_contents(BASE_URI.'app/translations/'.$maillang.'/mails/footer'.$ext);
$body .= ($ext == '.html') ? '{fotco}' : '{altfotco}';
foreach( $mailvars as $var => $val )
{
if( !is_array($val) )
{
$body = str_replace('{'.$var.'}', $val, $body);
}
}
foreach( $settarr as $var => $val )
{
$body = str_replace('{'.$var.'}', $val, $body);
}
return $body;
}
else // altbody
{
$altbody = file_get_contents(BASE_URI.'app/translations/'.$maillang.'/mails/header.txt');
$altbody .= file_get_contents(BASE_URI.'app/translations/'.$maillang.'/mails/'.$content.'.txt');
$altbody .= file_get_contents(BASE_URI.'app/translations/'.$maillang.'/mails/footer.txt');
$altbody .= '{altfotco}';
foreach( $mailvars as $var => $val )
{
if( !is_array($val) )
{
$altbody = str_replace('{'.$var.'}', $val, $altbody);
}
}
foreach( $settarr as $var => $val )
{
$altbody = str_replace('{'.$var.'}', $val, $body);
}
return $altbody;
}
}
private static function sendas( $thisMail )
{
global $db;
/**
* A list of E-Mail-servers
*/
$key = 'mailservers';
$servers = Cache::get($key);
if( !$servers )
{
$result = $db->fetchquery("SELECT * FROM `".DBP."settings_mailsrv`");
if( !empty($result) AND Func::countDim($result) > 1 )
{
foreach( $result as $srv ){
$servers[$srv['address']] = $srv;
}
}
elseif( !empty($result) )
{
$servers[$result['address']] = $result;
}
// Cache::setToCache($key, $servers, '999999');
}
/**
* Which email should be sent from which server
*/
$key = 'mailsfrom';
$mailsfrom = Cache::get($key);
if( !$mailsfrom )
{
$result = $db->fetchquery("SELECT * FROM `".DBP."settings_mailsfrom` ORDER BY `srvid` ASC");
if( !empty($result) AND Func::countDim($result) > 1 )
{
foreach( $result as $srv ){
$mailsfrom[$srv['mail']] = $srv['srvid'];
}
}
elseif( !empty($result) )
{
$mailsfrom[$result['mail']] = $result['srvid'];
}
// Cache::setToCache($key, $mailsfrom, '999999');
}
if( empty($servers) )
{
return 'No Emailserver available!';
}
elseif( !empty($servers) AND !empty($mailsfrom) AND !array_key_exists($thisMail, $mailsfrom) )
{
return 'For this E-Mail was not set an E-mail-Server!';
}
else{ return $servers[$mailsfrom[$thisMail]]; }
}
}
Meiner #1
Meiner #2
Seiner
Ich hoffe Jemand mag mir helfen denn es muss dringend gelöst werden da mein CMS sonst unbrauchbar ist =(
MFG: Paykoman