Я использую Laravel 4 framework с AWS sdk для SES. Я могу отправлять обычные письма с помощью функции sendEmail. Я хочу, чтобы иметь возможность прикреплять файлы к письмам, проблема в том, что я не могу найти, как это сделать.
возможно ли использовать функцию sendEmail для прикрепления файлов, или я должен использовать функцию send_raw_email? (как это сделать?)
это как я использую SES:
$msg['Source'] = Config::get('mail.mailSource'); $msg['Destination']['ToAddresses'][] = $_GET['email']; $msg['Message']['Subject']['Data'] = "bla bla"; $msg['Message']['Body']['Text']['Data'] = 'bla bla'; $msg['Message']['Body']['Html']['Data'] = 'bla bla'; $ses = AWS::get('ses'); $ses->sendEmail($msg);
Я посмотрел на AWS sdk в laravel и нашел там массив с требованиями для функции sendEmail, но нет никаких подсказок для файлов прикрепленных файлов
'SendEmail' => array( 'httpMethod' => 'POST', 'uri' => '/', 'class' => 'Aws\\Common\\Command\\QueryCommand', 'responseClass' => 'SendEmailResponse', 'responseType' => 'model', 'parameters' => array( 'Action' => array( 'static' => true, 'location' => 'aws.query', 'default' => 'SendEmail', ), 'Version' => array(......
единственный способ, которым я нашел отправлять электронные письма с вложениями (используя SES SERVICE), – это метод SendRawEmail.
$message = "To: ". $_GET['email'] ."\n"; $message .= "From: ". $msg['Source'] ."\n"; $message .= "Subject: Example SES mail (raw)\n"; $message .= "MIME-Version: 1.0\n"; $message .= 'Content-Type: multipart/mixed; boundary="aRandomString_with_signs_or_9879497q8w7r8number"'; $message .= "\n\n"; $message .= "--aRandomString_with_signs_or_9879497q8w7r8number\n"; $message .= 'Content-Type: text/plain; charset="utf-8"'; $message .= "\n"; $message .= "Content-Transfer-Encoding: 7bit\n"; $message .= "Content-Disposition: inline\n"; $message .= "\n"; $message .= "Dear new tester,\n\n"; $message .= "Attached is the file you requested.\n"; $message .= "\n\n"; $message .= "--aRandomString_with_signs_or_9879497q8w7r8number\n"; $message .= "Content-ID: \<77987_SOME_WEIRD_TOKEN_BUT_UNIQUE_SO_SOMETIMES_A_@domain.com_IS_ADDED\>\n"; $message .= 'Content-Type: application/zip; name="shell.zip"'; $message .= "\n"; $message .= "Content-Transfer-Encoding: base64\n"; $message .= 'Content-Disposition: attachment; filename="file.png"'; $message .= "\n"; $message .= base64_encode( $attachedFile ); $message .= "\n"; $message .= "--aRandomString_with_signs_or_9879497q8w7r8number--\n"; $sendMsg['RawMessage']['Data'] = (string)base64_encode($message); $sendMsg['RawMessage']['Source'] = $msg['Source']; $sendMsg['RawMessage']['Destinations'] = $_GET['email']; $ses->SendRawEmail($sendMsg);
обратите внимание на следующие строки:
$ message. = 'Content-Disposition: attachment; имя файла = "file.png" ';
$ message. = base64_encode ($ attachFile);