Приложение электронной почты PHP не будет храниться в отправленной папке - PullRequest
0 голосов
/ 02 июля 2019

Я работаю на PHP, чтобы хранить электронные письма в отправленной папке.У меня проблема с сохранением вложений в отправленной папке, так как вложение не будет сохраняться в отправленной папке, а будет отправлено только сообщение электронной почты, которое будет сохранено в отправленной папке.

Вывод для $attachment:

iVBORw0KGgoAAAANSUhEUgAABQAAAAOyCAIAAACjVO/kAAAAAXNSR0IArs4c6QAAAARnQU1BAACx jwv8YQUAAAA
JcEhZcwAADsMAAA7DAcdvqGQAAP+lSURBVHhe7P0FeBxJguYPz80y3e7et3uw97/bmbuZm94d3J7pmQY3T3P3NMM0
u9vuNkObmW2ZmdluM5PclplkSbYkSxZYzMxosb83K6KisqJAVVKV8P097yNHRkZERgZkxevMyvrefdKdaWpquldXX11b
W1ldU1FVTVEURVEURVFU1xFW6VirY8WOdbtcZNOhQa4u1Lf0EjTS1EURVEURVHdRVi9Yw0vV/Okk6AB7n40NDZW+db6Vlb
pMRRFURRFURTVa+XP5TFW8ljPy5U96XBogLsZmC3aFGqvKh1iKIqiKIqiKKqXy8+L5MZGPhHdOdAAdycwT7SZQ1EURVEURVFUd
1SPuQ+cHB0RfPrYvhULVo0bAiGATUTK3V0MGuBuQ3NzszZnKIqiKIqiKIrqvsIKX671uycF 2Rk75k9fPOxLp8IuJJBJuww0wP5l
w+ZtGzdvlxvto6qGr7yiKIqiKIqiqK6rvIJCSIt0o6qaWrnW bytZWVm7d+9ebWHr1q13796VO7wn4naUDHlG8OljmuN1KiSTGboG
7TLANTU1U6bPhuS2H7gRGnYj JKyhoUFu+wjU/Mixk6j5Z18OgBDYtWc/IsVeuFYRaCcoR5Tffg9c3+Drr/5SFEVRFEVRFOVTnTl3EdIi3
att74VuaWnB3+PHjy9atOjcuXMXLlwICgq6ePHi8uXL9+zZI9J4i1cGODjwqLK4i4Z+ocJO Y8IvBslsXYC2G2DhfuHuJk+bJaP8AAxw0L
kLvvXAV64FDxwyUlhTsxCJXcK1yqTtQJSDxoEQaKcHrqzWp4or5RUUbt2x65sxEyEEtL0URVEURVEURflJI8dMwCJci3Svymp5E64NBAcHh
4aGbt68eefO nbt27Vq7du3Vq1cjIiLa9pvDnhvgguwMs7817O7wfkuG9xN/jYCDB/b

Вот полный код:

<?php

$dmy=date("d-M-Y H:i:s"); 
$dmy.= " +0200"; // Had to do this bit manually as server and me are in different timezones 

$username = 'myusername';
$password = 'mypassword';

$mailserver = '{imap.example.com:993/imap/ssl/novalidate-cert}INBOX.Sent';
$mailbox = imap_open($mailserver, $username, $password);
$messageID = sprintf("<%s.%s@%s>",
    base_convert(microtime(), 10, 36),
    base_convert(bin2hex(openssl_random_pseudo_bytes(8)), 16, 36),
    'example.com');

$boundary = "------=".md5(uniqid(rand())); 
$header = "MIME-Version: 1.0 "; 
$header .= "Content-Type: multipart/mixed; boundary=".$boundary; 
$header .= " "; 
$file = "uploads/add-attachment.png"; 
$filename = "add-attachment.png"; 
$ouv = fopen ("$file", "rb");
$lir = fread ($ouv, filesize ("$file"));
fclose($ouv); 

$attachment = chunk_split(base64_encode($lir)); 

$msg2 .= "--$boundary "; 
$msg2 .= "Content-Transfer-Encoding: base64 "; 
$msg2 .= "Content-Disposition: attachment; filename=\"$filename\"\r\n" ;
$msg2 .=  "\r\n" . $attachment . "\r\n"; 
$msg2 .= "\r\n\r\n\r\n"; 
$msg2 .= "--$boundary--\r\n\r\n"; 
$msg2 .= " "; 
$msg3 .= "--$boundary-- "; 
imap_append($mailbox, $mailserver,

    "From: rob@example.com r\n".
    "To: ddsgds@gmail.com \r\n".
    "Subject: This is the subject \r\n".
    "Date: ".date("r", strtotime("now"))."\r\n".
    "Message-ID: ".$messageID."\r\n".
    "MIME-Version: 1.0 \r\n".
    "Content-Type: multipart/mixed; boundary=".$boundary.
    "Content-Transfer-Encoding: 7bit \r\n".
    "\r\n\r\n".
    $msg2.
    $msg3,
    "\\Seen"
    );
imap_close ($mailbox);

echo "message have been stored in the sent folder, now let check";
echo "<br>";
?>

Я не могу выяснить, почему вложения электронной почты не сохраняются в отправленной папке.Я проверил местоположение файла и указал правильное местоположение файла.Я также проверил имя файла, переменная $attachment и все, что я положил, правильные, так что ничего общего с этим не имеет.Возможно, я что-то пропустил, но я не уверен, что именно.

Не могли бы вы показать мне пример того, как я могу хранить вложения электронной почты в отправленной папке?

Спасибо.

1 Ответ

0 голосов
/ 02 июля 2019

Вы нигде не храните вложение, потому что вы только читаете существующий файл и закрываете чтение.Если вы хотите написать куда-нибудь переменную $attachment, вам нужно использовать что-то вроде этого:

$write_file = fopen('new_file.txt', 'w');
fwrite($write_file, $attachment);
...