Как я могу внедрить аутентифицированную электронную почту SMTP с вложением, используя Pear Mail - PullRequest
0 голосов
/ 13 января 2019

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"; 
   }

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

...