2016-05-31 7 views
1

php에서 amazon SES sendmail() 함수를 사용하여 메일에 pdf 첨부 파일을 보내려고합니다. MIME 형식을 내용으로 취하고 메일을 보내는 함수를 작성했습니다. 하지만 메일에 첨부 파일을 보낼 수 없습니다. 파일 경로와 다른 모든 값은 완벽하게 보입니다.amazon ses mail attachment php

/* 
* Function sendRawMail() is used to send mails to user with attachments 
*/ 
public function sendRawMail($subject, $body='', $to, $cc = '',$bcc = '', $filetype,$filename,$filepath) 
{ 

    $domain = explode('@', $to); 
    if (count($domain) > 1 && $domain[1] == 'guest.com') { 
     $to = '[email protected]'; 
    } 

    $destination = array(); 
    $destination['ToAddresses'] = array($to); 
    if($cc != '') 
    { 
     $cc = explode(',', $cc); 
     $destination['CcAddresses'] = $cc; 
    } 
    if($bcc != '') 
    { 
     $bcc = explode(',', $bcc); 
     $destination['BccAddresses'] = $bcc; 
    } 


    $replyTo = '[email protected]'; 

    $client = SesClient::factory(array(
     'key' => Yii::$app->params['aws.id'], 
     'secret' => Yii::$app->params['aws.secret'], 
     'region' => 'us-east-1', 
    )); 

    $message= "To: ".$to."\n"; 
    $message.= "From: ".$replyTo."\n"; 
    $message.= "Subject: ".$subject."\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.= $body; 
    $message.= "\n\n"; 
    $message.= "--aRandomString_with_signs_or_9879497q8w7r8number\n"; 
    $message.= "Content-ID: \<[email protected]_IS_ADDED\>\n"; 
    $message.= 'Content-Type: application/'.$filetype.'; name="'.$filename.'"'; 
    $message.= "\n"; 
    $message.= "Content-Transfer-Encoding: base64\n"; 
    $message.= 'Content-Disposition: attachment; filename="'.$filename.'"'; 
    $message.= "\n"; 
    $message.= base64_encode(file_get_contents($filepath)); 
    $message.= "\n"; 
    $message.= "--aRandomString_with_signs_or_9879497q8w7r8number--\n"; 

    $result = $client->SendRawEmail(array(
     // Source is required 
     'Source' => '​​​​Knowlens Solutions Pvt. Ltd. <[email protected]>', 
     // Destination is required 
     'Destination' => $destination, 
     // Message is required 
     'RawMessage' => array(
      // Data is required 
      'Data' => base64_encode($message), 
     ), 

    )); 

} 

메일이 성공적으로 사용자에게 전송되지만 첨부하지 않고 다음과 같이

기능 코드입니다. 도와주세요.

답변

0

메시지의 전체 크기는 10MB를 초과 할 수 없습니다. 여기에는 메시지의 일부인 첨부 파일이 포함됩니다. pdf 파일의 크기를 확인 했습니까?

+0

에 오신 것을 환영합니다 사용자에게 메일을 보내는 데 사용됩니다,이 코멘트가 아닌 해답이 될 것이다. –

0

감사합니다. 그것은 나를 위해 일했습니다. 업데이트 된 코드를 다음과 같이

기능 sendRawMail()가 유래 Wenhan 두에 (첨부 파일 AWS 메일)

public function sendRawMail($subject, $body='', $to, $cc = '',$bcc = '', $filetype,$filename,$filepath) 
{ 
    $precc = $cc; 
    $prebcc = $bcc; 

    $domain = explode('@', $to); 
    if (count($domain) > 1 && $domain[1] == 'ABC.com') { 
     $to = '[email protected]'; 
    } 

    $destination = array(); 
    $destination['ToAddresses'] = array($to); 
    if($cc != '') 
    { 
     $cc = explode(',', $cc); 
     $destination['CcAddresses'] = $cc; 
    } 
    if($bcc != '') 
    { 
     $bcc = explode(',', $bcc); 
     $destination['BccAddresses'] = $bcc; 
    } 


    $replyTo = '[email protected]'; 

    $client = SesClient::factory(array(
     'key' => Yii::$app->params['aws.id'], 
     'secret' => Yii::$app->params['aws.secret'], 
     'region' => 'us-east-1', 
    )); 

    $message= "To: ".$to."\n"; 
    $message.= "From: ".$replyTo."\n"; 
    if($precc != '') 
    { 
     $message.= "Cc: ".$precc."\n"; 
    } 
    if($prebcc != '') 
    { 
     $message.= "Bcc: ".$prebcc."\n"; 
    } 
    $message.= "Subject: ".$subject."\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/html; charset="utf-8"'; 
    $message.= "\n"; 
    $message.= "Content-Transfer-Encoding: 7bit\n"; 
    $message.= "Content-Disposition: inline\n"; 
    $message.= "\n"; 
    $message.= $body; 
    $message.= "\n\n"; 
    $message.= "--aRandomString_with_signs_or_9879497q8w7r8number\n"; 
    $message.= "Content-ID: \<[email protected]_IS_ADDED\>\n"; 
    $message.= 'Content-Type: application/'.$filetype.'; name="'.$filename.'"'; 
    $message.= "\n"; 
    $message.= "Content-Transfer-Encoding: base64\n"; 
    $message.= 'Content-Disposition: attachment; filename="'.$filename.'"'; 
    $message.= "\n"; 
    $message.= base64_encode(file_get_contents($filepath)); 
    $message.= "\n"; 
    $message.= "--aRandomString_with_signs_or_9879497q8w7r8number--\n"; 
    $result = $client->SendRawEmail(array(
     // Source is required 
     'Source' => 'ABC Solutions Pvt. Ltd. <[email protected]BC.com>', 
     // Destination is required 
     'Destination' => $destination, 
     // Message is required 
     'RawMessage' => array(
      // Data is required 
      'Data' => base64_encode($message), 
     ), 

    )); 
    return $result; 
}