Добавление вложения в электронное письмо php mysql - PullRequest
0 голосов
/ 08 марта 2012

Привет, ребята, у меня есть скрипт новостной рассылки, который будет отправлять все, что администратор поместил в текстовую область на все электронные письма в базе данных, теперь я хотел бы, чтобы этот пользователь также мог загружать файл PDF в это письмо,Любая помощь высоко ценится!вот код фактической отправки электронного письма:

Обычная текстовая область с сообщением. Тема является предметом. Необходимо будет добавить в форму вход для загрузки, который подтверждается этим сценарием

<?php
include "connect.php";
$subject = stripslashes($_POST["subject"]);
$plain = stripslashes($_POST["plain"]);

$result = mysql_query("SELECT email FROM member");
$emails = array();
while ($row = mysql_fetch_row($result))
$emails[] = $row[0];
$subject = $_POST['subject'];
$from = "noreply@wgtfgb.com";
$headers = "From:" . $from;
$to = implode(", ", $emails);

mail($to, $_POST['subject'], $_POST["plain"], $headers);
?>
<link rel="stylesheet" type="text/css" href="view.css" media="all">
<script type="text/javascript" src="view.js"></script>
<form id='register' action='updateprofile.php' method='post' accept-charset='UTF-8'>
<body id="main_body" >

    <img id="top" src="top.png" alt="">
<div id="form_container">

<h1>Newsletter Sent</h1>
    <form id="form_362567" class="appnitro"  method="post" action="">
                <div class="form_description">
        <h2>&nbsp;Newsletter Sent</h2>
        <p></p>
    </div>                      
        <ul >

                <li class="section_break">

        <p></p>
    </li>       <li id="li_2" >
    <label class="description" for="email">
    <?php
echo "Newsletter successfully sent, you will be redirected back to the member area in     5     seconds.";
?>
</form>
        <div id="footer">
<meta http-equiv="refresh" content="5; URL=index.php">
    </div>
</div>
<img id="bottom" src="bottom.png" alt="">
</body>

Ответы [ 3 ]

1 голос
/ 08 марта 2012

Используйте библиотеку, подобную SwiftMailer (http://swiftmailer.org/docs/messages.html)... гораздо проще добавлять вложения.

0 голосов
/ 11 марта 2012

Вы можете попробовать это

    <?php
            $fp = fopen('myfile.pdf','rb'); 
            $dt = fread($fp,filesize('myfile.pdf'));

            $attachments[] = Array(
               'data' => $dt,
               'name' => $name,
               'type' => 'application/pdf'
            ); 

              //Generate a boundary string

            $semi_rand = md5(time());
            $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

            $emailcontent="<style type='text/css'>
                        body {
                            font-family: arial, Geneva, sans-serif;
                            font-size: 12px;
                        }
                        </style>";


            $subject = 'Subject';

            $my_message = 'My message';

            $headers = "MIME-Version: 1.0\n" .
                       "From: {$from}\n" .
                        "Content-Type: multipart/mixed;\n" .
                       " boundary=\"{$mime_boundary}\"";


                //Add a multipart boundary above the plain message


            $final_message = "This is a multi-part message in MIME format.\n\n" .
                      "--{$mime_boundary}\n" .
                      "Content-Type: text/html; charset=\"iso-8859-1\"\n" .
                      "Content-Transfer-Encoding: 7bit\n\n" .
                      $my_message . "\n\n";


                //Add sttachments

            foreach($attachments as $attachment){
               $data = chunk_split(base64_encode($attachment['data']));
               $name = $attachment['name'];
               $type = $attachment['type'];

               $final_message .= "--{$mime_boundary}\n" .
                          "Content-Type: {$type};\n" .
                          " name=\"{$name}\"\n" .              
                          "Content-Transfer-Encoding: base64\n\n" .
                          $data;
            }

            $final_message .= "--{$mime_boundary}--\n";

        $emailto = 'myeamil@test.com';

        mail($emailto, $subject, $final_message, $headers);


?>

Я давно использовал этот код для прикрепления вложений. Я не уверен, что он все еще работает.

0 голосов
/ 08 марта 2012

PEAR_mail - это простая и хорошо поддерживаемая замена встроенной почтовой функции PHP.Он имеет поддержку кодирования MIME и вложений и отличную документацию для того, чего вы пытаетесь достичь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...