2014-05-23 92 views
2

我使用Laravel 4框架和AWS sdk for SES。我可以使用sendEmail函數發送常規電子郵件。我想能夠附加文件到電子郵件,問題是我找不到如何做到這一點。aws:帶附件的文件

它甚至可以使用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); 

我laravel看着AWS SDK時,發現有與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(...... 

回答

3

我發現用附件發送郵件(使用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: \<[email protected]_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); 

注意這行:

$消息=「內容處置:附件。文件名= 「file.png」';

$ message。= base64_encode($ attachedFile);

+0

我得到這個錯誤**致命錯誤:調用第267行的/libraries/Simpleemailservice.php中的非對象上的成員函數setParameter()** –