2016-06-03 2 views
2

Я пытаюсь отправить изображение, которое у меня есть в строке base64 по электронной почте. Это код, который я использую. Сообщение отправлено успешно, однако я не могу открыть/просмотреть изображение, ни в браузере, ни при его загрузке. Когда я использую онлайн-предварительные изображения изображений, которые преобразуют base64 в изображения и передают им содержимое переменной $qr_base64, они показывают картинку, в которой я нуждаюсь. В чем может быть проблема? Заранее спасибо.Почему невозможно привязать изображение вложений через google smtp?

$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

Это было долгое время, так как я использовал 'PHPMailer', но не должны там быть' $ mail-> Body'? Во всяком случае, вы должны захватить электронную почту. Чтобы иметь возможность предварительного просмотра изображения, у почты должно быть «Content-Type: multipart/alternative», а часть, содержащая изображение, должна также иметь правильный MIME (например, «Content-Type: image/png»). Я подозреваю, что вы отправляете ** base64 ** с MIME 'Content-Type: text/plain' – grochmal

+0

как я могу это сделать? – nicks

+0

Вы упомянули 'gmail', он может показать вам сырое письмо. В правом верхнем углу сообщения (рядом с кнопкой ответа) указаны параметры сообщения, один из которых - «Показать оригинал». – grochmal

ответ

0

попробовать это

<!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; 
    } 
    } 
    ?> 
Смежные вопросы