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

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

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

2505閲覧

PHPから送ったメールをスマホで受信すると空白行が入る

nata-de-Gollira

総合スコア42

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2016/08/19 12:32

cakePHP1.3のEmailComponentを使用してメール送信しているのですが、
携帯(iphone)で受信メールを確認すると末尾に不要な空白(行末まで空白+1行空白行が入る)が入ってしまいます。

どうすれば、余計な空白を入れられず送信できるのでしょうか?

なお、iPhoneアプリのGmailでも同様の表示ですが、PCのGmailで確認すると空白は入っていませんでした。

cakePHPでメール送信のコード及び設定は以下の通りです。

$this->Email->reset(); $this->Email->lineLength = 998; $this->Email->charset = 'iso-2022-jp'; $this->Email->to = 'Toのアドレス'; $this->Email->from = 'Fromのアドレス'; $this->Email->subject = 'タイトル'; $this->Email->send( '本文です');

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/19 12:42

メーラーの仕様なきがしますが 最終行に空白が1行増えることによる不利益があるのですか?
nata-de-Gollira

2016/08/19 12:57

メーラーの仕様ではない気がするのですが。例えば、Gmailから携帯にメールを送付しても、特に空白行は入りません。ということは送信側で制御ではないでしょうか? 1行増えることによる不利益ですが、単純に見た目が良くないことです。
guest

回答1

0

ベストアンサー

このコンポーネントは使ったことがないのですが、ソースを見ると仕様?のような気がします

CakePHP1.3

1 2 function send($content = null, $template = null, $layout = null) { 3 $this->_createHeader(); 4 5 if ($template) { 6 $this->template = $template; 7 } 8 9 if ($layout) { 10 $this->layout = $layout; 11 } 12 13 if (is_array($content)) { 14 $content = implode("\n", $content) . "\n"; 15 } 16 17 $this->htmlMessage = $this->textMessage = null; 18 if ($content) { 19 if ($this->sendAs === 'html') { 20 $this->htmlMessage = $content; 21 } elseif ($this->sendAs === 'text') { 22 $this->textMessage = $content; 23 } else { 24 $this->htmlMessage = $this->textMessage = $content; 25 } 26 } 27 28 if ($this->sendAs === 'text') { 29 $message = $this->_wrap($content); 30 } else { 31 $message = $this->_wrap($content, 998); 32 } 33 34 if ($this->template === null) { 35 $message = $this->_formatMessage($message); 36 } else { 37 $message = $this->_render($message); 38 } 39 40 $message[] = ''; // ←ここで1行足しているように見える 41 $this->__message = $message; 42 43 if (!empty($this->attachments)) { 44 $this->_attachFiles(); 45 } 46 47 if (!empty($this->attachments)) { 48 $this->__message[] = ''; 49 $this->__message[] = '--' . $this->__boundary . '--'; 50 $this->__message[] = ''; 51 } 52 53 $_method = '_' . $this->delivery; 54 $sent = $this->$_method(); 55 56 $this->__header = array(); 57 $this->__message = array(); 58 59 return $sent; 60 } 61 function _wrap($message, $lineLength = null) { 62 $message = $this->_strip($message, true); 63 $message = str_replace(array("\r\n","\r"), "\n", $message); 64 $lines = explode("\n", $message); 65 $formatted = array(); 66 67 if ($this->_lineLength !== null) { 68 trigger_error(__('_lineLength cannot be accessed please use lineLength', true), E_USER_WARNING); 69 $this->lineLength = $this->_lineLength; 70 } 71 72 if (!$lineLength) { 73 $lineLength = $this->lineLength; 74 } 75 76 foreach ($lines as $line) { 77 if (substr($line, 0, 1) == '.') { 78 $line = '.' . $line; 79 } 80 $formatted = array_merge($formatted, explode("\n", wordwrap($line, $lineLength, "\n", true))); 81 } 82 $formatted[] = ''; // ここでも1行足しているように見える 83 return $formatted; 84 } 85

追加されている空の配列が、メール送信時に無視されないのであれば、余計な1行が追加されるのではと推測されますね

投稿2016/08/20 10:00

KatsumiTanaka

総合スコア924

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nata-de-Gollira

2016/08/22 01:05

試しにご指摘の箇所をコメントアウトすると上手くいきました!正直1行足している意図が不明です。送信時にも無視していないため、この箇所をコメントにしてもよいものか。。。
KatsumiTanaka

2016/08/22 14:01

Ver2.8のコードも確認しましたが、2.8のEmailComponentでは、1行あたりの文字数を調整する処理が大きく変更になっており、何らかの不都合があったのかも?と思います。 テストを行って問題がないようであれば、コメントアウトしても良いかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問