PHP pear Mail с реализацией вложений с моим текущим кодом. как ни странно, было много источников, которые просто не работали.
На данный момент моя почтовая форма может отправлять почту с помощью php pear mail SMTP Но он не имеет возможности отправить прикрепленный файл или MIME.
Я пытаюсь добавить классы Mail_mime require('Mail/mime.php');
, пусть мое поле вложения name = picture
так что мой обработчик файлов $file = 'cat.jpg';
мне нужно загрузить этот файл на мой сервер? или если можно напрямую отправить на почту? Я не уверен
Что я должен изменить, чтобы попытаться отправить аутентифицированную SMTP-электронную почту с вложением с помощью Pear Mail.
<?php
// Pear Mail Library
require_once "Mail.php";
require_once "Mail/mime.php";
//getting form data
$errorMSG = "";
if (empty($_POST["name"])) {$errorMSG = "Name is required ";} else { $name = $_POST["name"];}
if (empty($_POST["email"])) {$errorMSG .= "Email is required ";} else {$email = $_POST["email"];}
if (empty($_POST["subject"])) {$errorMSG .= "Subject is required ";} else {$subject = $_POST["subject"];}
if (empty($_POST["message"])) {$errorMSG .= "Message is required ";} else {$message = $_POST["message"];}
//Message prepair
$Subject =$subject;
$sender_name =$name;
$sender_email =$email;
$body .="Customer Name: ".$sender_name."\r\n <br>";
$body .="Customer Email: ".$sender_email."\r\n <br>";
$body .=$message;
//Mime type adding
$text = $body;
$html = '<html><body>'.$body.'</body></html>';
$attachment = $Attachment;
$crlf = "\n";
$mime = new Mail_mime($crlf));
$mime -> setTXTBody($text);
$mime -> setHTMLBody($html);
$allowTypes = array('pdf', 'jpg', 'png', 'jpeg');
$file_type = $_FILES['attachment']['type']
if(in_array($file_type, $allowTypes)){
foreach($_FILES['attachment']['tmp_name'] as $key => $value){
$file_name = $_FILES['attachment']['name'][$key]; //nama file (tanpa path)
$tmp_name = $_FILES['attachment']['tmp_name'][$key]; //nama local temp file di server
$file_type = $_FILES['attachment']['type'][$key]; //tipe filenya (langsung detect MIMEnya)
$fp = fopen($tmp_name, 'r');
$content = fread($fp, filesize($tmp_name));
$content = addslashes($content);
fclose($fp);
$data = chunk_split(base64_encode($content));
$mime->addAttachment($data, $file_type);
}
}
$body = $mime -> get();
// Identify the sender, recipient, mail subject, and body
$sender = $sender_name."<no-reply@example.com>";
$recipient = "info@example.com";
$Cc = "cc@example.com";
$subject = $Subject ;
// Identify the mail server, username, password, and port
$server = "ssl://smtp.example.com";
$username = "no-reply@example.com";
$password = "**********";
$port = "465";
// Set up the mail headers
$headersssss = array(
"MIME-Version" => '1.0',
"Content-Type" => 'text/html; charset="UTF-8',
"Content-Transfer-Encoding" => 'base64\r\n',
"From" => $sender,
"To" => $recipient,
"Reply-To" => $sender_email,
"Cc" => $Cc,
"Subject" => $subject
);
$headers = $mime -> headers($headersssss);
// Configure the mailer mechanism
$smtp = Mail::factory("smtp",
array(
"host" => $server,
"username" => $username,
"password" => $password,
"auth" => true,
"port" => 465
)
);
// Send the message
$mail = $smtp->send($recipient, $headers, $body);
if (PEAR::isError($mail)) {
echo ($mail->getMessage());
}else{
echo "success";
}
Я нашел пример здесь Может ли кто-нибудь помочь мне с этим?