使用sendgrid将文件附加到电子邮件

时间:2017-03-28 06:09:31

标签: php codeigniter email email-attachments sendgrid

我使用的是sendgrid邮件程序,但是我没有将csv文件附加到邮件功能。 以下是撰写邮件的代码......

$ resumeName = $ _FILES [' resume'] [' name'];

$ resumePath = $ _FILES [' resume'] [' tmp_name'];

需要在发件人邮件中下载此文件...

  public static function sendMailwithAttachment($mail_type, $mail_variable = array(), $subject, $from, $to, $resumeName, $resumePath) {

    $CI = & get_instance();

    if ($mail_type !== NULL) { 
        $CI->db->select('tpl');
        $CI->db->from('tblMailTypes');
        $CI->db->where('id', $mail_type);
        $query = $CI->db->get();

        $mailIdres = $query->result_array();
        if (!empty($mailIdres)) {
            $message = $mailIdres[0]['tpl'];
            if (!empty($mail_variable)) {
                foreach ($mail_variable as $key => $val) {
                    $message = str_ireplace($key, $val, $message); // select message format from table
                }
            }
        }
    }

    $from = new SendGrid\Email(null, $from);

    $to = new SendGrid\Email(null, $to);

    $content = new SendGrid\Content("text/html", $message); 
    exit();



    $mail = new SendGrid\Mail($from, $subject, $to, $content);

    $apiKey = 'ABCD..................HHHHFFFRRDSE'; // Sendgrid API key
    $sg = new \SendGrid($apiKey);

   addAttachment($resumePath, $resumeName); 


   $response = $sg->client->mail()->send()->post($mail);
}

任何人请帮助

1 个答案:

答案 0 :(得分:2)

此代码工作正常......

public static function sendEMailwithAttachment($mail_type, $mail_variable = array(), $subject, $from, $mailto,$username, $fileName, $filePath){

       // If you are using Composer (recommended)
require 'vendor/autoload.php';

 // If you are not using Composer
 // require("path/to/sendgrid-php/sendgrid-php.php");

    $CI = & get_instance();

    if ($mail_type !== NULL) { 
        $CI->db->select('tpl');
        $CI->db->from('tblMailTypes');
        $CI->db->where('id', $mail_type);
        $query = $CI->db->get();

        $mailIdres = $query->result_array();
        if (!empty($mailIdres)) {
            $message = $mailIdres[0]['tpl'];
            if (!empty($mail_variable)) {
                foreach ($mail_variable as $key => $val) {
                    $message = str_ireplace($key, $val, $message);
                }
            }
        }
    }

 $from = new SendGrid\Email("User", $from);

 $to = new SendGrid\Email($username,$mailto);
 $content = new SendGrid\Content("text/html", $message);
 $file = $filePath;
 $file_encoded = base64_encode(file_get_contents($file));
 $attachment = new SendGrid\Attachment();
 $attachment->setContent($file_encoded);
 $attachment->setType("application/text");
 $attachment->setDisposition("attachment");
 $attachment->setFilename($fileName);

 $mail = new SendGrid\Mail($from, $subject, $to, $content);
 $mail->addAttachment($attachment);

 $apiKey = 'ABCD..................HHHHFFFRRDSE'; // Sendgrid API key

 $sg = new \SendGrid($apiKey);

 $response = $sg->client->mail()->send()->post($mail);



// If you want response

//echo $response->statusCode();
//echo $response->headers();
//echo $response->body();
}