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

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

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

POP(Post Office Protocol)とは、電子メールで使用される受信プロトコル(通信規約)です。SMTPで転送されたメールを一時的に保管し、そのメールをサーバから取り出す際に使用します。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

PHP

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

Q&A

0回答

2038閲覧

phpで受信したメールの件名が文字化けする

hatsuzo

総合スコア56

POP

POP(Post Office Protocol)とは、電子メールで使用される受信プロトコル(通信規約)です。SMTPで転送されたメールを一時的に保管し、そのメールをサーバから取り出す際に使用します。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

PHP

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

0グッド

1クリップ

投稿2020/06/23 00:57

お世話になります。
WindowsServer上でメールを自動受信を行う方法を探しておりまして、qdmailというライブラリを見つけました。
アップデートが止まっているというのが気にはなりますが、簡単にメール受信と添付ファイルの保存が、1つのファイルをインクルードするだけでいとも簡単にできてしまいました。秀悦なライブラリのようです。
しかし、実装するにあたり、特定のアドレスと件名だけに絞って受信するようにしたところ、文字コードの問題で、件名が読み取れません。
qdmailの固有問題ではないと思いますが、メールのヘッダ情報をエンコードしてWindowsサーバー上で識別できるようにする方法が、色々検索して調べてみたのですがうまくいきません。
アドバイス頂ければ幸いです。
OS:WindowsServer2012
PHP:7.2
文字コード:utf-8

PHP

1<?php 2require_once('qdmail_receiver.php'); 3$server = array( 4 'protocol'=>'pop3', 5 'host'=>'*****.co.jp', 6 'user'=>'hoge', 7 'pass'=>'hogehoge', 8); 9$info = array( 10 'address'=>'target@*****.co.jp', 11 'title'=>'出荷完了通知', 12); 13print mb_convert_encoding($info['title'], "UTF-8", mb_internal_encoding()); 14 15$receiver = QdmailReceiver::start('pop', $server); 16for($i = 1 ; $i <= $receiver->count() ; $i++){ 17 $from = $receiver->header(array('from','mail')); 18 $to = $receiver->header(array('to','mail')); 19 $h = $receiver->header(array('subject','name')); 20// $h = mb_convert_encoding($h, 'ISO-2022-JP-MS', mb_internal_encoding()); 21// $h = mb_convert_encoding($h, "UTF-8", "auto"); 22 if(strcmp($from, $info['address'])==0){ 23 if(strcmp($h, $info['title'])==0){ 24 } else { 25 continue; 26 } 27 } else { 28 continue; 29 } 30 $body = $receiver->bodyAutoSelect(); 31 print "From:[{$from}]\n"; 32 print "To:[{$to}]\n"; 33 print "Title:[{$h}]\n"; 34 print "Contents:\n[{$body}]\n"; 35 // 添付ファイルを保存 36 $attach = $receiver->attach(); 37 foreach($attach as $att){ 38 $fp=fopen($att['filename_safe'],'w'); 39 fputs($fp,$att['value']); 40 fclose($fp); 41 } 42// $pointer = $receiver->pointer(); // 現在のメールIDを取得 43// $receiver->delete($pointer); // 現在のメールを削除 44 $receiver->next(); 45} 46?> 47

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問