2016-05-31 13 views
1

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

メッセージの合計サイズは10 MBを超えることはできません。これには、メッセージの一部である添付ファイルが含まれます。 あなたのpdfファイルのサイズを確認しましたか?

+0

ようこそユーザーにメールを送信するために使用され、これはコメントではない答えなければなりません。 –

0

ありがとうございました。それは私のために働いた。 更新されたコードを次のように

機能sendRawMail()がStackOverflowの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]>', 
     // Destination is required 
     'Destination' => $destination, 
     // Message is required 
     'RawMessage' => array(
      // Data is required 
      'Data' => base64_encode($message), 
     ), 

    )); 
    return $result; 
} 
関連する問題