PHPmailer отправляет электронную почту с вложением - PullRequest
0 голосов
/ 31 января 2019

У меня есть скрипт для отправки писем с помощью PHPmailer (класс отличается, потому что я использую CRUD, но функции те же)

Это скрипт:

    if (array_key_exists('recipient', $_POST)) {
        $attachment = tempnam(sys_get_temp_dir(), hash('sha256', $_FILES['attachment']['name']));
        move_uploaded_file($_FILES['attachment']['tmp_name'], $attachment);
        $recipient = $_POST['recipient']; 
        $subject = $_POST['subject'];
        $content = $_POST['content'];
        //$attachment = $_POST['attachment'];

        $email->Sender = "noreply@fw.net";
        $email->Recipient = "noreply@fw.net";
        if (!empty($_POST['recipient'])) {
            $email->Recipient = $recipient;
        } else { 
            foreach ($bcc as $bcc) {
                $email->addBcc($bcc);
        }
    }   
    //$email->addRecipient = $bcc;
    $email->Subject = $subject;
    $email->Content = $content; 
    $email->addAttachment($attachment, 'MyFile');
    $email->Format = "html";
    //$email->send();

    if(!$email->send()) {
        $msg = '<div style="Color:red">Sent:</div>'. $email->SendErrDescription;    
    } else {
        $msg = '<div style="Color:green">not Sent</div>';
        header("Refresh:5");
    }
}

thisформа: email.php (работает на той же странице скрипт / форма)

<form id="mess" action="email.php" method="POST" enctype="multipart/form-data">
<?php if ($Page->CheckToken) { ?>
<input type="hidden" name="<?php echo TOKEN_NAME ?>" value="<?php echo $Page->Token ?>">
<?php } ?>
<div id="jsInfo" data-count="<?php echo $count; ?>"></div>
<div class="card card-primary card-outline">
.......
                 <div class="form-group">
                  <div class="btn btn-default btn-file">
                    <i class="fa fa-paperclip"></i> Allegato
                    <input type="hidden" name="MAX_FILE_SIZE" value="100000"> <input type="file" name="attachment" id="attachment">
                  </div>
                  <p class="help-block">Max. 10MB</p>
                </div>
........
                  <button type="submit" value="Upload" name="submit" class="btn btn-primary"><i class="fa fa-envelope-o"></i> Send </button>

Я изменил место назначения на php.ini. Я использую wamp в локальной сети для тестирования с:

sys_temp_dir = "/tmp"

to

sys_temp_dir = "c:/Users/lt/Documents/Temp"

Вопрос:

Почему файл не прикреплен к исходному файлу (pdf, jpg, bmp, txt ecc ..), а файл * .tmp прикреплен.?где я не прав?

допустим, я решил это.

don't works
$attachment = tempnam(sys_get_temp_dir(), hash('sha256', $_FILES['attachment']['name']));
move_uploaded_file($_FILES['attachment']['tmp_name'], $attachment);

works
$uploaddir = 'C:/wamp64/www/fw3/';
$attachment_tmp = $_FILES['attachment']['tmp_name'];
$attachment_name = $_FILES['attachment']['name'];
move_uploaded_file($attachment_tmp, $uploaddir . $attachment_name);

У меня опять две проблемы ... 1) Как отправить вложение всем получателям?2) При отправке файла 4Mb страница загружается много времени, как я могу изменить скрипт, чтобы отправка работала в фоновом режиме?

...