質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.60%

FuelPHPで添付ファイル付きメールを送るとiPhoneのメールAPPで添付ファイルが見えない

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 939

s7a

score 13

 前提・実現したいこと

FuelPHPのEmailパッケージを利用して、添付ファイル付きメールを送信するシステムを作成しました。

 発生している問題・エラーメッセージ

受信したメールクライアントのうちiPhoneの標準メールアプリだけは添付ファイルが存在しない状態となりました。

本文や件名、FROM、TOは正しく表示されています。
また、メールアプリのリスト部分に添付ファイル付きであるクリップマークも表示されています。
しかし、メールを開くと添付ファイルが存在していないメールと同様の表示です。
通常であれば、添付された画像はサムネイルで表示され、PDF等のファイルはファイルアイコンが表示されているはずです。

 該当のソースコード

$email = Email::forge();
$email->from($from, $name);
$email->to($to);
$email->reply_to($reply);
$email->subject($subject);
$body = View::forge('email/attach_test');
$email->body($body);
$email->attach($filepath1,false,null,null,$filename1);
$email->attach($filepath2,false,null,null,$filename2);
$email->attach($filepath3,false,null,null,$filename3);
$email->send();

 試したこと

以下のメールクライアントで受信した場合は正しく添付ファイルを開くことが出来ました。
・PC(Windows 10) Becky! 2.73
・PC(Windows 10) https://mail.google.com/ (Firefox56.0.2)
・iPhone(iOS 12.0.1) Gmailアプリ

 補足情報(FW/ツールのバージョンなど)

Amazon Linux 2
Apache 2.4.34
Postfix 2.10.1
PHP7.2
FuelPHP1.8.1
Emailパッケージの設定

return array(
    /**
     * Default settings
     */
    'defaults' => array(
        /**
         * Mail useragent string
         */
        'useragent'    => 'Email Send System',
        /**
         * Mail driver (mail, smtp, sendmail, noop)
         */
        'driver'        => 'mail',
        /**
         * Whether to send as html, set to null for autodetection.
         */
        'is_html'        => null,
        /**
         * Email charset
         */
        'charset'        => 'utf-8',
        /**
         * Wether to encode subject and recipient names.
         * Requires the mbstring extension: http://www.php.net/manual/en/ref.mbstring.php
         */
        'encode_headers' => true,
        /**
         * Ecoding (8bit, base64 or quoted-printable)
         */
        'encoding'        => '8bit',
        /**
         * Email priority
         */
        'priority'        => \Email::P_NORMAL,
        /**
         * Default sender details
         */
        'from'        => array(
            'email'        => false,
            'name'        => false,
        ),
        /**
         * Default return path
         */
        'return_path'   => false,
        /**
         * Whether to validate email addresses
         */
        'validate'    => true,
        /**
         * Auto attach inline files
         */
        'auto_attach' => true,
        /**
         * Auto generate alt body from html body
         */
        'generate_alt' => true,
        /**
         * Forces content type multipart/related to be set as multipart/mixed.
         */
        'force_mixed'   => false,
        /**
         * Wordwrap size, set to null, 0 or false to disable wordwrapping
         */
        'wordwrap'    => 76,
        /**
         * Path to sendmail
         */
        'sendmail_path' => '/usr/sbin/sendmail',
        /**
         * SMTP settings
         */
        'smtp'    => array(
            'host'        => '',
            'port'        => 25,
            'username'    => '',
            'password'    => '',
            'timeout'    => 5,
        ),
        /**
         * Newline
         */
        'newline'    => "\n",
        /**
         * Attachment paths
         */
        'attach_paths' => array(
            // absolute path
            '',
            // relative to docroot.
            DOCROOT,
        ),
    ),
    /**
     * Default setup group
     */
    'default_setup' => 'default',
    /**
     * Setup groups
     */
    'setups' => array(
        'default' => array(),
    ),
);
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

詳細まで確認していませんが、FuelPHP で単に画像などを添付した場合、 Content-Type がmultipart/related となるようですね。
通常、単なる添付付きメールは multipart/mixed とすべきで、iPhone メールによる表示が異なるのはこの影響だと思います。

従って、全メール送信に適用して良いのであれば、config/email.php の force_mixed を true に設定すればおそらくご質問の問題は解消されると思います。
個別に適用するのであれば、例えば上記のコードであれば、

$email = \Email::forge('xxxx', array('force_mixed' => true));

でいけるかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/19 10:30

    Email設定のforce_mixedをtrueに変更したところ、iPhoneの標準メールアプリでも添付ファイルを確認することができました。
    ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.60%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る