Задать вопрос
@hollanditkzn

Почему не отправляется изображение на почту по phpMailer?

У меня код, но никакие изображение туда не отправляются. Могу дать еще на гитхабе если потребуется рассмотреть более подробно код https://github.com/hollandit/futbolka1.git
list($r, $g, $b) = sscanf($color, "#%02x%02x%02x");
$colorGd = imagecolorallocate($im, $r, $g, $b);

imagefill($im, 0, 0, $colorGd);

$imageSave = "image/imgKonstr/img.jpg";

if (isset($_FILES["photo"])) 
{ if ($_FILES["photo"]["error"] == 0) {
	$imageFile = move_uploaded_file($_FILES["photo"]["tmp_name"], "image/img/".$_FILES["photo"]["name"]);
	$imageFile1 = "image/img/".$_FILES["photo"]["name"];
	$imageSave = "image/imgKonstr/".$_FILES["photo"]["name"];

	switch ($_FILES["photo"]["type"]) {
		case 'image/png':
			$im2 = imagecreatefrompng($imageFile1);
			break;
		case 'image/jpeg':
			$im2 = imagecreatefromjpeg($imageFile1);
			break;
	}
	imagealphablending($im2, false);
	imagesavealpha($im2, true);
	$trans = imagecolorallocatealpha($im2, 0, 0, 0, 127);

	$rotate = imagerotate($im2, $turn*-1, $trans, $visibility);
	$width1 = imagesx($rotate);
	$height1 = imagesy($rotate);
	$width2 = imagesx($im2);
	$height2 = imagesy($im2);

	if ($size == 0) {
		$size = $width2;
	} else {
		$size = $size;
	}
	imagecopyresampled($im, $rotate, (int)$leftCanvas, (int)$topCanvas, 0, 0, $size, $height1, $width1, $height1);
	imagedestroy($im2);	
	imagedestroy($rotate);
	}
}
imagettftext($im, $sizeText, 0, (int)$leftText+150, (int)$topText+200, $colorTextGd, $font, $text);
$im1 = imagecreatefrompng($type);
imagealphablending($im1, false);
imagesavealpha($im1, true);
$width = imagesx($im1);
$height = imagesy($im1);
imagecopyresampled($im, $im1, 0, 0, 0, 0, 466, 465, $width, $height);

header('Content-Type: image/jpeg');
imagejpeg($im);
imagejpeg($im, $imageSave, 100);
imagedestroy($im);
imagedestroy($im1);

$tel = htmlspecialchars($_POST["phoneOrder"]);
$sizeFutbol = htmlspecialchars($_POST["sizeFutbol"]);
$number = htmlspecialchars($_POST["number"]);
$price = htmlspecialchars($_POST["price"]);

$to="test@gmail.com";
$subject="Конструктор с сайта Печать  на футболках";
$message = "Телефон ".$tel."\n Тип ".$type."\n Цвет ".$color."\n Название картинки ".$imageFile1."\n Поворот ".$turn."\n Масштаб ".$size."\n Прозрачность ".$visibility."\n Шрифт ".$font."\n Текст ".$text."\n Смещен влево текст ".$leftCanvas."\n Смещен сверху текст ".$topCanvas."\n Размер текста ".$sizeText."\n Цвет текста ".$colorText."\n Размер футболки ".$sizeFutbol."\n Количество штук ".$number."\n Прайс ".$price."\n Изображение футболки: ".$imageSave;
sendSMTP($to, $subject, $message, $attach);


И код в файле отправке почты
<?php 
function sendSMTP($to, $subject, $message, $attach=false)
{
	require("class.phpmailer.php");
	require("class.smtp.php");
	$mail= new PHPMailer();
	
	$mail->FromName= "Holland";
	$mail->SMTPDebug = 1;
	$mail->Host = "smtp.gmail.com";
	$mail->SMTPSecure= "ssl";
	$mail->Port = "465";
	$mail->SMTPAuth = true;
	$mail->CharSet = "utf-8";
	$mail->Username = "holland.itkzn@gmail.com";
	$mail->Password = "123456";
	$mail->addAddress($to);
	$mail->From = $to;
	$mail->Subject = $subject;
	$mail->Body = $message;
	if (isset($_FILES["photo"])){
		if ($_FILES["photo"]["error"]==0) {
			$mail->AddAttachment($_FILES["photo"]["tmp_name"], $_FILES["photo"]["name"]);
		}
		$mail->AddAttachment($image);
	}

	if($mail->Send()){
		header("Location: thank.php");
	}else{echo "письмо не отправлено"; echo "Ошибка: ".$mail->ErrorInfo;}
}
?>

У меня еще проблема в том, что у меня есть изображение которая была сделана с GD
  • Вопрос задан
  • 464 просмотра
Подписаться 1 Оценить 8 комментариев
Решения вопроса 1
@antonowano
Профессиональный самоучка
Добавьте в функцию sendSMTP параметр array $attachment = array() и передавайте с его помощью пути на файлы, которые нужно прикрепить. Советую вместо временного хранилища использовать место, куда файл был скопирован после закачки, в вашем случае это - $imageFile1.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы