2016-06-03 14 views
2

Ich versuche, ein Bild, das ich als Zeichenfolge in Base64 auf E-Mail haben. Dies ist der Code, den ich verwende. Die Nachricht wurde erfolgreich gesendet, ich kann das Bild jedoch weder im Browser noch beim Herunterladen öffnen/anzeigen. Wenn ich Online-Vorschaubilder verwende, die base64 in Bilder umwandeln und ihnen den Inhalt der Variablen $qr_base64 übergeben, zeigen sie das Bild, das ich brauche. Was könnte das Problem sein? Danke im Voraus.Warum kann der Bildanhang nicht ordnungsgemäß über Google SMTP übertragen werden?

$mail = new PHPMailer(true); 
try 
{ 
    //Tell PHPMailer to use SMTP 
    $mail->isSMTP(); 
    $mail->SMTPDebug = 2; 
    $mail->Debugoutput = 'html'; 
    $mail->Host = "smtp.gmail.com"; 
    $mail->Port = 587; 
    $mail->SMTPAuth = true; 
    $mail->SMTPSecure = "tls"; 
    $mail->Username = "[email protected]"; 
    $mail->Password = "pass"; 
    $mail->setFrom('[email protected]', 'First Last'); 
    $mail->addAddress("$mailto", 'John Doe'); 
    $mail->Subject = 'PHPMailer SMTP test'; 
    $mail->msgHTML("asdf"); 
    $mail->AltBody = 'This is a plain-text message body'; 
    $mail->AddStringAttachment($qr_base64, "Filename.png"); 
    $mail->send(); 
} catch (phpmailerException $e) { 
    echo $e->errorMessage(); 
} catch (Exception $e) { 
    echo $e->getMessage(); 
} 
+0

Es hat eine lange Zeit her, dass ich 'PHPMailer' verwendet, sollte aber ein' $ mail-> Body' nicht da sein? Jedenfalls sollten Sie die E-Mail selbst erfassen. Um das Bild in der Vorschau anzeigen zu können, muss die Mail "Content-Type: multipart/alternative" haben und der Teil, der das Bild enthält, muss ebenfalls den richtigen MIME haben (z. B. "Content-Type: image/png"). Ich vermute, du schickst die ** base64 ** mit MIME 'Content-Type: text/plain' – grochmal

+0

wie kann ich das machen? – nicks

+0

Sie erwähnten 'gmail', es kann Ihnen die rohe E-Mail zeigen. In der oberen rechten Ecke der Nachricht (neben der Antwort-Schaltfläche) befinden sich die Nachrichtenoptionen, eine davon ist "Original anzeigen". – grochmal

Antwort

0

versuchen diese

<!DOCTYPE html> 
<html> 

<body> 
<div class="class"> 

    <form action="sendmail.php" method="post" enctype="multipart/form-data"> 

    Email:<input type="email" placeholder="Email" name="emailfrom" /><br><br> 
    Image: <input type="file" placeholder="Image Upload" name="smtpimg" /> 


       <input type="submit" name="smtp" value="Send SMTP" /> 


    </form> 
</div> 
</body> 
</html> 


    <?php 
    include "PHPMailer_5.2.4/class.phpmailer.php"; 
    if(isset($_POST["smtp"])){ 
        $email = $_POST["emailfrom"]; 
        $target_dir = "smtpimg/"; 
    $target_file= $target_dir .time().basename($_FILES['smtpimg']['name']); 
    $movefile=move_uploaded_file($_FILES['smtpimg']['tmp_name'], $target_file); 
    $mail = new PHPMailer(); 

    $mail->IsSMTP(); 
    $mail->SMTPDebug = 1; 
    $mail->SMTPAuth = true; 
    $mail->SMTPSecure = 'ssl'; 
    $mail->Host = "smtp.gmail.com"; 

    $mail->Port = 465; 
    $mail->IsHTML(true); 
    $mail->Username = "[email protected]"; 
    $mail->Password = "pass"; 
    $mail->AddReplyTo("[email protected]", "Reply name"); 
    $mail->AddAddress($email,'ashu'); 
    $mail->Subject = "SMTP Receivced"; 
    $mail->Body = "<b>Succesfully SMTP Receivced</b>"; 
    $mail->AddAttachment($target_file); 
    $text = 'Text version of email'; 
    $html = '<html><body>HTML version of email</body></html>'; 
    $file = 'index.php'; 
    $crlf = "\n"; 
    $hdrs = array(
        'From' => '[email protected]', 
        'Subject' => 'Test mime message' 
       ); 
    if($mail->send($hdrs)) 
    { 
    echo "<script> alert('Successfully Mailed');window.location = '';</script>"; 
    } 
    else{ 
    echo "Mailed Error: " . $mail->ErrorInfo; 
    } 
    } 
    ?>