1

応募者が履歴書を pdf、doc、または docx 拡張子でアップロードできるようにする雇用申請書を作成しました。次に、Sendgrid を使用して、彼らの情報を電子メールで送信し、人事部に再開します。

テストの結果、メールを送信するとエラーが発生することがわかりました。

パラメータ添付[resume.pdf]はutf8ではありません

この問題を解決するにはどうすればよいですか? メールに添付する前に、アップロードされたすべてのファイルを utf-8 にエンコードする必要がありますか? これにより問題が発生したり、ユーザーがアップロードした履歴書が変更されたりすることはありますか?

SendGrid API 経由で送信するために使用する PHP Curl コードを次に示します (注: REST API を使用する必要があります。SMTP はクライアント Web サーバーで構成されていません)。

    <?php

        $mail['from'] = 'humanresources@email.org';
                    $mail['fromname'] = 'Human Resources';
                    $mail['to'] = 'person@email.com';



                    $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);

?>
4

2 に答える 2

0

おそらく、sendgrid の Web サービス API を使用してこれらのメッセージを送信する代わりに、単純に phpmailer を使用し、送信メール サーバー smtp.sendgrid.net を使用して SMTP 経由で sendgrid 経由でメッセージを送信します。この方法でメッセージを送信すると、このエラーは発生しないと確信しています。https://github.com/PHPMailer/PHPMailerの例を参照してください。

于 2013-07-17T19:50:17.710 に答える