2015-01-30 2 views
0

이 코드를 시도했습니다. 그러나 이미지는 이메일에 표시되지 않습니다. 차단하지 않고 이미지를 표시해야합니다.PHP를 사용하여 이메일을 보내는 동안 이미지 차단 방지

require("class.phpmailer.php") 
$mail = new PHPMailer(); 
$mail->IsSMTP(); 
$mail->Host = "smtp.sendgrid.net"; 
$mail->SMTPAuth = true; 
$mail->Username = 'username'; 
$mail->Password = 'password'; 
$mail->From="[email protected]"; 
$mail->FromName="Email Image"; 
$mail->Sender="[email protected]"; 
$mail->AddReplyTo("[email protected]", "Reply"); 
$mail->AddAddress("[email protected]"); 
$mail->Subject = "Test"; 
$mail->IsHTML(true); 
$mail->AddEmbeddedImage('https://ci4.googleusercontent.com/proxy/D7vQqu3U7j2qWYtvzCLHodLRvMHt1Fq0F5s12lEp2YQc-RPwytgpqhRLhqzIZglky59F4-A-OtVXlmglO2CoS7CrkZk=s0-d-e1-ft#http://litebreeze.com/images/profile_small.jpg',profile_pic,'profile_small.jpg', "base64", "application/octet-stream"); 
$mail->Body = "This is a test picture: <img src=\"cid:profile_pic\" /></p>"; 
$mail->AltBody="This is text only alternative body."; 
if(!$mail->Send()) 
{ 
    echo "Error sending: " . $mail->ErrorInfo; 
} 
else 
{ 
    echo "Letter is sent"; 
} 

답변

0

여기서 여러 가지 일을하고 있습니다.

  • addEmbeddedImage

    당신이 아니라 파일 원격 URL에 로컬 경로를 제공 할 예정이다.
  • 의도하지 않은 MIME 형식을 고의적으로 설정했습니다.
  • cid를 인용하지 않았습니다.
  • Google의 프록시 캐시에서 이미지를 가져올 이유가 없습니다. 소스에서 바로 가져옵니다. 모든 이들에 대한

수정 : 당신은 암호화를 사용하지 않는

$mail->AddStringEmbeddedImage(file_get_contents('http://litebreeze.com/images/profile_small.jpg'),'profile_pic','profile_small.jpg'); 

은 - $mail->SMTPSecure = 'tls';$mail->Port = 587; 설정합니다.

또한 PHPMailer의 이전 버전을 사용하고 있으며 더 이상 사용되지 않는 예제에 코드를 기반으로합니다. 이동 get the latest.

+0

답변 해 주셔서 감사합니다. 퍼가기 이미지가 잘 작동합니다. 그러나 이미지는 기본적으로 이메일에 표시되지 않습니다. "이미지 표시"를 클릭 한 후에 만 ​​이미지가 표시됩니다. 사용자 권한을 묻지 않고 기본적으로 이미지를 표시하는 방법이 있습니까? –

+0

아니요, 사용자의 제어하에 있습니다. 그것이 그것이 묻는 이유입니다. 사용자가 자신을 자신의 주소록에 추가하면 이미지가 표시됩니다. – Synchro

관련 문제