781 11.10.2020 smtpphpmailerphpпоштарозсилкаpop3 PHP

Як відправляти листи та файли на пошту в PHP?

Відправка листів та файлів через SMTP протокол та бібліотеку PHPMailer

Як відправляти листи та файли на пошту в PHP?

Можна використати стандартну для PHP функцію mail(), але такі листи в кращому випадку будуть в спамі, в гіршому, взагалі не дойдуть до отримувача, тому для відправки листів на пошту потрібно використовувати SMTP або POP3 протоколи.

На момент написання статті самим простим методом відправки листів на пошту через SMTP або POP3 протоколи в PHP залишається бібліотека PHPMailer.

Нижче наведу функцію яка використовує бібліотеку PHPMailer, вхідні параметри функції дозволяють прикріпити до листа файли а також декількох отримувачів:

function send_smtp_mail($title, $body, $file, $recipient_mail){
	require 'phpmailer/PHPMailer.php';
	require 'phpmailer/SMTP.php';
	require 'phpmailer/Exception.php';
	$mail = new PHPMailer\PHPMailer\PHPMailer();
	try{
		$mail->isSMTP();   
		$mail->CharSet = "UTF-8";
		$mail->SMTPAuth   = true;
		$mail->Host       = 'smtp.site.com'; // хост сервера вашої пошти
		$mail->Username   = 'support@site.com'; // Логін вашої пошти
		$mail->Password   = 'pass'; // Пароль до вашої пошти
		$mail->SMTPSecure = 'TLS'; // або SSL
		$mail->Port       = 25; // TLS - 25 / SSL - 465
		$mail->setFrom('support@site.com', 'Support');
		// перебираємо всіх отримувачів
		if(is_array($recipient_mail)){foreach($recipient_mail AS $_mail){$mail->addAddress($_mail);}}else{$mail->addAddress($recipient_mail);}
		// перебираємо всі прикріплені файли
		if(!empty($file['name'][0])){
			for($ct = 0; $ct < count($file['tmp_name']); $ct++) {
				$uploadfile = tempnam(sys_get_temp_dir(), sha1($file['name'][$ct]));
				$filename = $file['name'][$ct];
				if (move_uploaded_file($file['tmp_name'][$ct], $uploadfile)){$mail->addAttachment($uploadfile, $filename);}
			}
		}
		$mail->isHTML(true);
		$mail->Subject = $title;
		$mail->Body = $body;
		if($mail->send()){$result = "success";}else{$result = "error";}
	}catch(Exception $e){$result = 'Exception: '.$e;}
	return $result;
}

Приклад використання функції:

// відправка листа з одним отримувачем, без прикріплених файлів
send_smtp_mail('Заголовок листа', '<p>Контент</p>', '', 'user@gmail.com');

// відправка листа з декількома отримувачами та прикріпленими файлами
send_smtp_mail('Заголовок листа', '<p>Контент</p>', $_FILES['files_input'], array('user@gmail.com', 'user_2@gmail.com', 'user_3@gmail.com'));

 

Потрібна допомога

Ми встановим, описаний в дані статті, чи будь-який інший, скрипт на Ваш сайт. Також Ви можете замовити індивідуальний скрипт, який буде повністю відповідати Вашим потребам.

Зв'яжіться з нами за контактами вказаними нижче, ми Вам надамо безкоштовну консультацію.

Контакти

Номери телефонів

+38 (093) 33 33 500

Електронна скринька

soft.dev.lviv@gmail.com

Адреса

Україна, Львівська обл., м. Червоноград