JavaBridge BIRT Отправить письмо

Мне нужна помощь в моем PHP-код. Мои отчеты сделаны в Eclipse BIRT с расширением файла .rptdesign, и я хочу отправить его через gmail. Я успешно отправляю, но изображения не работают и CSS не применяется. Вот мой код

<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';
}
}?>

Что я должен делать?

0

Решение

Процесс отправки не имеет ничего общего с CSS — это полностью зависит от клиента, хотя имейте в виду, что поддержка CSS в почтовых клиентах чрезвычайно изменчива, и вы не можете использовать внешние таблицы стилей. Трудно сказать, потому что вы не показали, что находится в теле сообщения.

Когда вы говорите, что изображение сломано, что вы имеете в виду?

Чтобы ссылаться на встроенное изображение, вы должны обратиться к его cid, лайк:

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

Другие решения

Гораздо разумнее отправлять графический отчет в виде вложения в формате PDF.

0

По вопросам рекламы [email protected]