###前提・実現したいこと
ユーザに空メールを送ってもらい会員登録を行う機能をPHPで開発しています。
送られてきたメールをパースしてメールアドレスを取得したいのですが、
しかしGmailから送られてきたメールの場合、
取得したヘッダー情報にGoogleアカウト名しか記載されていないという状況で対応に困っています。
WEBMINからlocalに保存されているメールのヘッダー情報を見ると、
From: hoge hoge hoge@xxxxcom
のようにFromアドレスが含まれています。
PHPでメールのヘッダー情報を取得する辺りで問題が発生しているような気がするのですが…。
今のところ、Gmail以外のメールアドレスから送られてきたアドレスについては正常に取得できています。
何卒お力添え頂けないでしょうか。
###例)取得したヘッダー情報の一部
Return-Path: X-Original-To:entry@xxxx.com Delivered-To: entry@xxxx.com Received: from mail-xxxxx.google.com (mail-xxxx.google.com [xxx.xx.xxx.xxx]) by mail.xxxx.jp (Postfix) with ESMTP id xxxxxxxx for ; Thu, 16 Feb 2017 12:47:38 +0900 (JST) Received: by mail-xxxx.google.com with SMTP id xxxxxx for ; DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version: From: hoge hoge ←(Googleアカウント名しか記載されていない) Subject: TEST To: xxxx Content-Type: multipart/alternative;
###ヘッダー情報を取得する箇所のソースコード
$account = array( 'host' => 'localhost', 'port' => '110', 'username' => 'username', 'password' => 'password', ); $pop3 =& new Net_POP3(); $pop3->connect($account['host'], $account['port']); $pop3->login($account['username'], $account['password']); $n_msg = $pop3->numMsg(); $header_list = $pop3->getParsedHeaders($n_msg); $body = mb_convert_encoding($pop3->getBody($n_msg), "euc-jp", "jis"); $body = htmlspecialchars($body, ENT_QUOTES, "euc-jp"); $pop3->disconnect(); $from = mb_decode_mimeheader($header_list['From']); // var_dump($header_list)."<hr>";
###追記
imap_open()でヘッダーを取得してみましたが、取得出来た内容は同一でした。
#imap_open $mbox = imap_open("{localhost:110/pop3/notls}INBOX", "user", "pass"); echo imap_fetchheader($mbox,1); imap_close($mbox);
回答2件
あなたの回答
tips
プレビュー