2016-06-08 8 views
0

ich eine Schleife für meine Mail-System erstellen möchten, die das Format SoDer Versuch, ein Array mit Kommas zu erstellen und semicolans

[email protected], Stan Smith 

verwendet, dass ich es durch meine Funktion

function SendEmail($to,$fromName, $subject, $message) 
{ 
    date_default_timezone_set('Etc/UTC'); 

    $mail = new PHPMailer; 
    $mail->isSMTP(); 
    $mail->SMTPDebug = 2; 
    $mail->Debugoutput = 'html'; 
    $mail->Host = smtp_host; 
    $mail->Port = smtp_port; 
    $mail->SMTPSecure = smtp_protocol; 
    $mail->SMTPAuth = true; 
    $mail->Username = smtp_user; 
    $mail->Password = smtp_pass; 
    $mail->setFrom(smtp_user, $fromName); 
    $mail->addReplyTo(smtp_user, $fromName); 
    $mail->addAddress($to); 
    $mail->Subject = $subject; 
    $mail->msgHTML($message); 
    $mail->send(); 
    if (!$mail->send()) { 
     echo "Mailer Error: " . $mail->ErrorInfo; 
    } 


} 

passieren kann diese Code ist durch eine Schleife zu gehen, so sagen Sie Stan Smith, Roger Smith und Francine Smith die Formulareingabe hätte haben

[email protected], Stan Smith; [email protected], Roger Smith; [email protected], Francine Smith 

Die Adressen würden dann in meine Funktionen Datei und liefen durch die Funktion übergeben werden, um die E-Mail-

$mail = new MailSystem(); 
    $emails=$_POST['emailTo']; 
    $email=explode(";",$emails); 
    foreach($email as $address) { 
    echo $mail->SendEmail($address, SITE_NAME." Newsletter", $_POST['emailSubject'], $_POST['emailBody']); 
    } 

Mein Problem zu senden ist, dass, wenn die E-Mail, es wird versuchen, zu senden versucht $mail->addAddress($address) und ich die Antwort bekommen laufen dass es eine ungültige Adresse ist. Ich kann gehen und die addAddress mit my email", "My name" manuell einstellen, aber wenn es auf diese Weise geht, löst es zu ungültiger Adresse auf.

+0

rtfm: [AddAddress()] (http://phpmailer.worxware.com/index.php?pg=methods). Es hat zwei Argumente: '($ address, $ name)'. Du schiebst BEIDE Namen und Adressen in das Argument $ address. –

Antwort

2

Auf der addAddress() müssen Sie den Empfängername und die Adresse teilen. Ihre Funktion sollte wie folgt aussehen:

function SendEmail($to,$fromName, $subject, $message) 
{ 
    date_default_timezone_set('Etc/UTC'); 

    $mail = new PHPMailer; 
    $mail->isSMTP(); 
    $mail->SMTPDebug = 2; 
    $mail->Debugoutput = 'html'; 
    $mail->Host = smtp_host; 
    $mail->Port = smtp_port; 
    $mail->SMTPSecure = smtp_protocol; 
    $mail->SMTPAuth = true; 
    $mail->Username = smtp_user; 
    $mail->Password = smtp_pass; 
    $mail->setFrom(smtp_user, $fromName); 
    $mail->addReplyTo(smtp_user, $fromName); 

    //split the to on , to get mail address and receiver name. 
    $address = explode(',', $to); 

    //check if the name is available. 
    if (!isset($address[1])) { 
     $mail->addAddress($address[0]); 
    } else { 
     $mail->addAddress($address[0], $address[1]); 
    } 

    $mail->Subject = $subject; 
    $mail->msgHTML($message); 

    //remove the following line because duplicate sending!!! 
    //$mail->send(); 

    if (!$mail->send()) { 
     echo "Mailer Error: " . $mail->ErrorInfo; 
    } 
} 
+0

Funktioniert gut mit zwei E-Mails, Zeit, um das doppelte Senden zu arbeiten. –

+0

siehe Update auf Code letzte Kommentare –

+0

Super! Das hat dieses Problem behoben; Danke vielmals; Du bist ein Lebensretter. –

Verwandte Themen