2013-07-17 46 views
1

我創建了一個就業應用程序,允許申請人以pdf,doc或docx擴展名上傳他們的簡歷。然後,我通過電子郵件將他們的信息發送給使用Sendgrid的人力資源。Sendgrid將只發送utf-8附件

我已經通過測試發現,發送電子郵件時,我收到一個錯誤:

參數附件[resume.pdf]是不是UTF8

我怎樣才能解決這個問題,我應該編碼每個上傳到utf-8的文件,然後將其附加到電子郵件中?這是否會產生任何問題或單獨修改用戶上傳的簡歷?

這是我的PHP捲曲的代碼,我使用通過SendGrid API發送: (注:我不得不使用REST API,沒有客戶端的Web服務器上配置SMTP)

<?php 

     $mail['from'] = '[email protected]'; 
        $mail['fromname'] = 'Human Resources'; 
        $mail['to'] = '[email protected]'; 



        $mail['subject'] = character_limiter('Employment: '. $application['position'], 50); 

        $mail['html'] = '<p><strong>Name:</strong> '.$application['firstname'].' '.$application['lastname'].'</p>'; 
        $mail['html'] .= '<p><strong>Position:</strong> '.$application['position'].'</p>'; 
        $mail['html'] .= '<p><strong>Date:</strong> '.mdate('%m/%d/%Y %g:%i %A', $application['timestamp_saved']).'</p>'; 
        $mail['html'] .= '<p><strong>Email:</strong> '.$application['email'].'</p>'; 


        $mail['files['.$application['pdf'].']'] = '@saved_applications/'. $application['pdf']; 



        //Sendgrid Credientals 
        $mail['api_user'] = 'sendgrid_user'; 
        $mail['api_key'] = 'sendgrid_pass'; 

        print_r($mail); 

        // Generate curl request 
        $session = curl_init('https://sendgrid.com/api/mail.send.json'); 
        curl_setopt ($session, CURLOPT_POST, true); 
        curl_setopt ($session, CURLOPT_POSTFIELDS, $mail); 
        curl_setopt($session, CURLOPT_HEADER, false); 
        curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 

        // obtain response 
        $response = curl_exec($session); 
        curl_close($session); 

        // print everything out 
        $output = json_decode($response, TRUE); 

        print_r($output); 

?> 
+0

看起來像sendgrid結束一個錯誤,你嘗試過他們的支持? –

回答

0

也許不是使用sendgrid的Web服務API發送這些消息,只需使用phpmailer並通過SMTP使用其發送郵件服務器smtp.sendgrid.net通過sendgrid發送消息。如果你以這種方式發送消息,我相信你不會得到這個錯誤。請參閱https://github.com/PHPMailer/PHPMailer的示例。

+0

使用SMTP是我最初想要採用的路線。但客戶端使用的託管服務提供商沒有在其Web服務器上配置SMTP :( – floatleft

+0

)使用phpmailer,您不需要在主機上運行的SMTP服務器,它將使用遠程SMTP服務器發送消息,例如作爲Sendgrid的smtp.sendgrid.net。 – mti2935

+0

它易於使用,安裝簡單,只需將3個文件複製到您的託管帳戶(包含在您的PHP腳本中),然後使用上面複製的鏈接中的示例作爲樣板用於發送消息(帶附件)。 – mti2935

1

您擁有的代碼應該可以工作(並且在測試它時工作)。

您可能想要使用PHP library,而不是平的捲曲。您可以到send attachments,從Web網頁API通過執行以下操作:

<?php 
    $sendgrid = new SendGrid('username', 'password'); 
    $mail = new SendGrid\Mail(); 
    $mail-> 
    addTo('[email protected]')-> 
    ... 
    addAttachment('saved_applications/'. $application['pdf']); 
    $sendgrid->web->send($mail); 
?> 
相關問題