2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

メール投稿システム(仮)【PHP】

Last updated at Posted at 2018-04-04

attachmentの画像保存

未だに完成してない、というか色々他の事やっててまたまた手付かずになってたやつ。
アウトプットして行かないと先に進めない気がするのでチラ裏程度に書いてます。

メーラーによって色々癖があってContent-Disposition:フィールドが全部attachmentになるとか全部inline(これはiPhone標準メーラーだけ)になるとかContent-Type: multipart/related;が無いとか色々癖がありすぎてどーやって対応すりゃいいのか未だに悩んでます。

Content-Disposition:フィールドがattachmentの場合、インラインならばContent-ID:フィールドがあるというのは解ったんだけど、ここから先の条件分岐が思い付かない。

iPhone標準メーラーだとContent-Disposition:フィールドが全部inlineになるし。

言葉で条件分岐を書くならば以下。

/*
バウンダリ区切りから次のバウンダリ区切りまでを $buf に格納。
Content-Disposition: attachmentの場合
$buf の中に Content-ID: が存在すれば inline処理
無ければ attachment処理 を施す。
*/

if (strpos($buf, "Content-ID:") !== false){
    // inline処理
} else {
    // attachment処理
}

iPhone標準メーラーだと最初の画像を添付ファイル扱いにすればやりたいことは実現できそうな気がする。X-Mailer:フィールドでiPhone Mailがヒットすれば専用の処理を走らす感じになるのかな。X-Mailer:フィールドは独自フィールドになるから今後、使えなくなりそうだけど今はこれしか思いつかない。

ソースがめちゃくちゃ肥大化してて凄く解り辛い。もっとスマートに記述出来たりするんだろうけど、レビューしてくれる人がいるわけでもないから自分でどうにかするしかない。解り辛くても動けばいいくらいに考えてます。後のメンテナンスのことを考えるほどスキルがあるわけでもないので、とりあえず動くものを作らないと。

何かあったら追記するかもです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?