вставлять динамическое изображение, созданное из GD в электронную почту, используя PHP - PullRequest
1 голос
/ 06 июля 2011

Для начала я использую следующее:

  • php 5.3
  • PHPmailer - для отправки электронной почты stmp с помощью приложений Google
  • GD для создания iamge

  • Я могу взять ранее существующий файл, добавить текст в этот файл и вывести в браузер.

  • Я могу отправить письмо с существующим встроенным изображением, используя простые функции в phpmailer
  • Я НЕ могу динамически изменять первый файл, сохранить его в памяти, а затем вставить ЭТО изображение в мою электронную почту.

При создании изображения я использую очень простой пример сценария:

EDIT

Я изменил свой код следующим образом: кажется, он работает быстрее и легче для чтения. Однако создается реальный файл, тогда как я предпочел бы временный файл, который я мог бы уничтожить после или просто использовать двоичные данные. Есть ли двоичная функция вывода, аналогичная imagegif ()?

$photo = imagecreatefromgif('sample.gif');
imagealphablending($photo, true);
$fontsize = 20;
$font = '../times.ttf';
$fontcolor = imagecolorallocate($photo, 0, 0, 0);
$angle = 0;
$x = 100;
$y = 100;
$text = 'THIS IS A BLOB OF TEXT YO!';
imagettftext($photo, $fontsize, $angle, $x, $y, $fontcolor, $font, $text);
imagegif($photo, 'test.gif');

к сожалению, это хочет вывести мой файл в браузер, затем продолжить работу с оставшейся частью сценария и отправить электронное письмо (без встроенного изображения).

Я знаю, что, возможно, упускаю что-то простое, но кто-нибудь сталкивался с этой проблемой раньше?

1 Ответ

1 голос
/ 06 июля 2011

Во-первых, вам нужно: а) сохранить изображение во временный файл, используя второй аргумент функции imagegif; b) использовать буферизацию вывода PHP, чтобы захватить результат, отправленный на вывод, и очистить его от ответа (см. http://php.net/ob).

После этого вам необходимо знать, как встроить изображение в качестве вложения в письмо электронной почты или скопировать его как реальный файл с доступным адресом http и указать на него <img href=""/>.

...