2014-05-23 59 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()** –