2016-09-09 4 views
0

私のPHPコードでいくつかの助けが必要です。私の報告書はBIRTのeclipseで作成され、.rptdesignファイル拡張子が与えられ、gmailを使って送信したいと思っています。送信に成功しましたが、画像が壊れてCSSが適用されません。ここに私のコードですJavaBridge BIRTメールを送信

<html> 
    <body> 
    <hr> 
     <form action="PhpRunAndRenderHTMLEmbed.php" method="POST"> 
      <input type="submit" name="submit" value="SEND"> 
     </form> 
    <hr> 
    </body> 
</html> 
<?php 

if (!(get_cfg_var('java.web_inf_dir'))) { 
    define ("JAVA_HOSTS", "127.0.0.1:8080"); 
    define ("JAVA_SERVLET", "/JavaBridge/JavaBridge.phpjavabridge"); 
} 
$pth = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["PHP_SELF"]; 
$path_parts = pathinfo($pth); 
$imageURLPrefix = $path_parts['dirname'] ."/sessionChartImages/"; 
require_once("java/Java.inc"); 

session_start(); 

$here = getcwd(); 

$ctx = java_context()->getServletContext(); 
$birtReportEngine =  java("org.eclipse.birt.php.birtengine.BirtEngine")->getBirtEngine($ctx); 
java_context()->onShutdown(java("org.eclipse.birt.php.birtengine.BirtEngine")->getShutdownHook()); 


try{ 


$report = $birtReportEngine->openReportDesign("${here}/TopNPercent.rptdesign"); 
$task = $birtReportEngine->createRunAndRenderTask($report); 
$taskOptions = new java("org.eclipse.birt.report.engine.api.HTMLRenderOption"); 
$outputStream = new java("java.io.ByteArrayOutputStream"); 
$taskOptions->setOutputStream($outputStream); 
$taskOptions->setEmbeddable(true); 
$taskOptions->setOutputFormat("html"); 
$ih = new java("org.eclipse.birt.report.engine.api.HTMLServerImageHandler"); 
$taskOptions->setImageHandler($ih); 
$taskOptions->setEnableAgentStyleEngine(true); 
$taskOptions->setBaseImageURL($imageURLPrefix . session_id()); 
$taskOptions->setImageDirectory($here . "/sessionChartImages/" . session_id()); 

$task->setRenderOption($taskOptions); 
$task->run(); 
$task->close(); 

} catch (JavaException $e) { 
    echo $e; //"Error Calling BIRT"; 

} 
echo $outputStream; 

if(isset($_POST['submit'])){ 
    require 'PHPMailer/PHPMailerAutoload.php'; 

    $mail = new PHPMailer; 

    $mail->isSMTP();         // Set mailer to use SMTP 
    $mail->Host = 'smtp.gmail.com';     // Specify main and backup SMTP servers 
    $mail->SMTPAuth = true;       // Enable SMTP authentication 
    $mail->Username = '[email protected]';   // SMTP username 
    $mail->Password = 'password'; // SMTP password 
    $mail->SMTPSecure = 'tls';       // Enable TLS encryption, `ssl` also accepted 
    $mail->Port = 587;         // TCP port to connect to 

    $mail->setFrom('[email protected]', 'sample'); 
    $mail->addReplyTo('[email protected]', 'sample'); 
    $mail->addAddress('[email protected]'); // Add a recipient 

    $mail->isHTML(true); // Set email format to HTML 


    $bodyContent = '<p>This is the HTML email sent from localhost using PHP</p>'; 

    $src = 'C:\xampp\htdocs\JavaBridge\sessionChartImages\6th1i2ih8j1r83o21iidi1qte0\custom6ab9ab811570c80985d2.png'; 
    $mail->AddEmbeddedImage($src, 'chart_image', 'custom6ab9ab811570c80985d2.png'); 

    $mail->Subject = 'BIRT PHP Email'; 
    $bodyContent .= $outputStream; 
    $mail->Body = $bodyContent; 


    if(!$mail->send()) { 
     echo 'Message could not be sent.'; 
     echo 'Mailer Error: ' . $mail->ErrorInfo; 
    } else { 
     echo 'Message has been sent'; 
    } 
} 


?> 

どうすればいいですか?電子メールクライアントでのCSSのサポートは非​​常に変数の心に留めていることをけれどもそれは、完全にクライアント次第です、あなたは外部スタイルシートを使用することはできません -

答えて

0

送信プロセスは何もCSSとするために行う必要はありません。あなたのメッセージ本文に何が表示されていないかは分かりません。

イメージが壊れていると言ったら、どういう意味ですか?それは、PDF形式の添付ファイルとしてグラフィカルなレポートを送信するためにはるかに理にかなって

<img src="cid:chart_image" /> 
+0

画像が表示されていません。壊れた画像アイコンのみを表示しています。 JavaBridgeにはサンプルのPhpRunAndRenderHTMLEmbed.phpファイルがあるので、レポート全体をHTMLとしてレンダリングし、ブラウザに表示します。しかし、レンダリングされたレポートを含む電子メールを送信しようとすると、イメージは表示されません –

0

はあなたのように、その cidを参照する必要が埋め込まれた画像を参照してください。