如何使用Pear Mail实现带有附件的经过身份验证的SMTP电子邮件

时间:2019-01-13 10:02:31

标签: php email phpmailer pear

PHP pear与我当前代码一起实现附件的邮件。奇怪的是,那里似乎有很多来源似乎没有用。

目前,我的邮件表单可以使用php pear邮件SMTP发送邮件。但是它没有发送附件或哑剧的能力。

我尝试添加Mail_mime类require('Mail/mime.php');让我的附件字段name = picture

所以我的文件处理程序$file = 'cat.jpg';

我需要将此文件上传到服务器吗?还是可以直接发送到电子邮件?我不确定

尝试使用Pear Mail发送带有附件的经过身份验证的SMTP电子邮件时,我应该修改什么。

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

我找到了一个示例here,有人可以帮我吗?

0 个答案:

没有答案