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

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

新規登録して質問してみよう
ただいま回答率
85.48%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

PHP

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

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

メール

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

Q&A

1回答

885閲覧

PHP上で多次元配列をメールとして送信したい

moto-goemon

総合スコア0

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

PHP

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

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

メール

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

0グッド

0クリップ

投稿2021/06/11 13:07

前提・実現したいこと

PHP上で多次元配列をメールとして送信したいです。

postfixのコンテンツフィルタにて、
PHPスクリプトを挟み込んで配送するメールのヘッダ(送信元)を書き換えたいと考えています。
受け取ったメールを多次元配列の形式に分解し、$structureに格納しています。

$params['include_bodies'] = true;
$params['decode_bodies'] = true;
$params['decode_headers'] = true;
$params['input'] = $email;
$params['crlf'] = "\r\n";
$structure = Mail_mimeDecode::decode( $params );

[subject]の値を[from]の文頭に加えました。
var_dump($structure) をすると以下のような出力になります。

ヘッダ書き換え後メールの出力

object(stdClass)#2 (4) { ["headers"]=> array(9) { ["return-path"]=> string(25) "<user11@example.com>" ["x-original-to"]=> string(18) "user12@example.com" ["delivered-to"]=> string(18) "user12@example.com" ["received"]=> array(2) { [0]=> string(105) "by mail.example.com (Postfix, from userid 1008) id 7196D41A2D4; ------- +0900 (JST)" [1]=> string(163) "from example.com (localhost [127.0.0.1]) by mail.example.com (Postfix) with SMTP id AFF3241A2D3 for <user12@example.com>; ----------- +0900 (JST)" } ["from"]=> string(22) "test-user11@example.com" ["to"]=> string(18) "user12@example.com" ["subject"]=> string(4) "test" ["message-id"]=> string(49) "<20210518015754.AFF3241A2D3@mail.example.com>" ["date"]=> string(37) "-------- +0900 (JST)" } ["ctype_primary"]=> string(4) "text" ["ctype_secondary"]=> string(5) "plain" ["body"]=> string(6) "honbun " }

この$structureをsendmailコマンドにて配送しようと思います。
しかし、多次元配列だとsendmailができないです。
$structureをメール送信するにはどのような処理が必要でしょうか。

メール送信

/usr/sbin/sendmail -G -i $to_address < /var/spool/filter/[$structureの内容]

試したこと

元メールのオブジェクトがstringのため、配列形式をstringに変換するように試みました。
多次元配列かつ連想配列のため上手くいかず、var_exportを試しましたが、オブジェクト形式が不明になりました。

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

CentOS7
php-5.4.16

参考にさせていただいたページ
https://se.ykysd.com/2018/02/22/post-241/

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

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

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

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

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

guest

回答1

0

求められてるのは

serialize()

ですかね?
戻す時はunserialize()で。

投稿2021/06/11 15:21

tanat

総合スコア18713

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

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

moto-goemon

2021/06/15 00:07

回答ありがとうございます。 string形式になって、メール送信の際にエラーをはかなくなりましたが、 間に「s:xx;」が入ったり、改行がなかったりでメールとして扱うには難しいと思います。。。
tanat

2021/06/15 06:35

今一つ何をしたいのかが分からないです。 最終的に求める結果と現在のコードを可能な限り全て質問に追記して下さい
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問