• 締切済み

スマホでHTMLメールの画像が表示されない(追記

スマートフォンで、HTMLメールの画像が表示されないのです。 ショッピングサイトで購入した商品画像を顧客あてにHTMLメールで送付しているのですが、 その画像が表示されません。下記のスクリプトですが、該当箇所は「商品画像」の部分です。 どこがどう間違っているのか、ご指導お願いします。⇒(2) ちなみに、PCのほうはちゃんと画像が表示されております。ブラウザはChrome 、スマホの OSはAndroid4.3 です。 また、HTMLメールのヘッダー部は。(1)のように書いております。 (1) $header = "From:raindrop.jp-5247423@users109.phy.lolipop.jp Content-Type:text/html; charset=ISO-2022-JP Content-Transfer-Encoding:8bit "; //////////////////// // 管理者へメール // //////////////////// $to = "~"; // 管理者のメールアドレス $subject = "お客様の注文が確定しました。"; // 題名 $to = mb_convert_encoding($to, "UTF-8", "auto"); // $toは、自動的にエンコードされない。 $subject = mb_convert_encoding($subject, "UTF-8", "auto"); $message = mb_convert_encoding($message, "UTF-8", "auto"); $header = mb_convert_encoding($header, "UTF-8", "auto"); mb_send_mail($to, $subject, $message, $header); // メール送信 //////////////////// // 購買者へメール // //////////////////// $html_header = '<doctype html><html><head><meta charset="ISO-2022-JP"></head><body bgcolor="#FFFFCC">'; $html_footer = '</body></html>'; $to_guest = $row2[4]; // 顧客へのメール送信 $subject = "【骨董品販売店】- ご注文内容の確認メールです"; $aisatsu = $row2[2].'&nbsp;様<br><br><h3 style="color: green">【骨董品販売店からの受注確認メールです】<br><br></h3>ご注文日時:'.$date.'<br>'; $kingaku2 = 'お支払合計金額:<h3 style="color: red">'.$sougoukeigaku.'&nbsp;円</h3>'; $number = '<br><br>受注番号:'.$receipt_number; ----------------------------------------------------------------------------------------------------------------- (2) <?php session_start();?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="refresh" content="10; url=login.php"> <title>ご注文確定画面</title> <!-- ◆ スマートフォン用 --> <meta name="viewport" content="width=device-width, initial-scale=1" /> <!-- jQuery本体--> <script type="text/javascript" src="./jquery/jquery-2.1.3.js"></script> <!-- スマホ用スタイルシート --> <link rel="stylesheet" href="./jquery/jquery.mobile-1.4.5.min.css" /> <!-- スマホ用JavaScript --> <script src="./jquery/jquery.mobile-1.4.5.min.js"></script> </head> <body bgcolor="#FFFFCC"> <?php mb_internal_encoding("UTF-8"); date_default_timezone_set("Japan"); $date = date('Y年m月d日(D)H時i分s秒'); <h1 style="color: green">ご注文が確定しました。有難うございました。</h1> <br><br><?php print("ご注文確定時間:".$date); ?> <br><br>お客様のメールアドレス宛てに、注文確定メールが送信されます。 <br><br><?php print("受注番号:".$receipt_number); ?> </center> <?php $con = mysql_connect("~", ”~", "~"); mysql_select_db("~"); mysql_set_charset('utf8'); $sql = "SET NAMES utf-8"; mysql_query($sql); mb_internal_encoding("UTF-8"); $sql = "SELECT * FROM cart_table WHERE order_kakutei=0"; $result = mysql_query($sql, $con); $rowco = mysql_num_rows($result); // テーブルの行数 ~ 中略 ~ $sougoukeigaku = 0; // 総合計金額の初期化 $points = 0; // 今回購入での単体商品のポイントの初期化 $point_sum = 0; // 今回購入での総ポイント値の初期化 $message = '受注日時:'.$date.'<br><br>'; for($i=0; $i<$rowco; $i++){ $row = mysql_fetch_row($result); // 取得された行に対応する配列を返し、内部のデータポインタを前に進める $sougaku = $row[4] * $row[6] * 1.08; // 税込総額 $sougoukeigaku+=$sougaku; $sql2 = "SELECT * FROM syouhin WHERE number='$row[1]';"; $result2 = mysql_query($sql2, $con); $row2 = mysql_fetch_row($result2); $points = $row2[6] * $row[6]; $point_sum+=$points; if($_SESSION['login']) $cart = '<br>商品コード:'.$row[1].'<br>商品名:'.$row[2].'<br>単価:'.$row[4].' &nbsp;円<br>個数:'.$row[6].'<br>税込総額:'.$sougaku.'&nbsp;円<br>付与ポイント:'.$row2[6].'&nbsp;pt<br><br>商品画像:<img src="http:/~/netshop/image_thumbnail/'.$row2[2].'"><br><br><br>'; // 会員IDでログインして購入した場合のみポイント付与 else $cart = '<br>商品コード:'.$row[1].'<br>商品名:'.$row[2].'<br>単価:'.$row[4].'&nbsp;円<br>個数:'.$row[6].'<br>税込総額:'.$sougaku.'&nbsp;円<br><br>商品画像:<img src="http://~/netshop/image_thumbnail/'.$row2[2].'"><br><br><br>'; $message.=$cart; // 購買商品情報を連結していく(管理者用) $message2.=$cart; // お客様用 } $cart_sum = '<br><br><br>お客様総合計額:'.$sougoukeigaku.'&nbsp;円<br><br>'; if($_SESSION['login']) $point = 'お客様総付与ポイント数:'.$point_sum.'pt<br><br>'; // 会員IDでログインして購入した場合のみポイント付与 $message.=$cart_sum; if($_SESSION['login']===1) $message.=$point; mysql_close($con);

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

  • naoki1986
  • ベストアンサー率28% (28/98)
回答No.1

HTMLメールが見れないのであれば、メールのソースがあるほうが原因を特定しやすいと思うのですが... 勿論headerやbodyのセキュリティ部分は伏せてくださいね。 phpソース貼られても...長くて... あと閲覧者側はhtmlメールに対応したメールクライアントですか?

beterugius
質問者

お礼

お忙しいところ、お返事いただきありがとうございました。

beterugius
質問者

補足

ええ、ドコモなのでドコモメールは、htmlに対応していて、ドコモ側で テストしてもらったところ、htmlに画像もついていたようです。 ちなみにヘッダーは次のようにしているとか。 Content-Type:multipart; charset=ISO-2022-JP Content-Transfer-Encoding:8bit

関連するQ&A

  • 本人確認メールについて

    販売サイトや、SNSでよくある本人確認メール(呼び方は知りません)の書き方について ご質問です。 ちなみに、自分で勝手な想像で作成したスクリプトを書いておきます。 どこが間違っているのかご指摘お願い致します。 -------------------------------------------------------------------------------------------------- //////////////////////// // 本人確認メール送信 // //////////////////////// $mail = $_SESSION['mail']; $con = mysql_connect("~", "~", "~"); mysql_select_db("~-~"); mysql_set_charset('utf8'); $sql = "SET NAMES utf-8"; mysql_query($sql); $sql = "SELECT * FROM member_profile WHERE email='$mail';"; $result = mysql_query($sql) or die; $row = mysql_fetch_row($result); $name = $row[2]; mysql_close($con); $header = "From:raindrop.jp-5247423@~.jp Content-Type:text/html; charset=ISO-2022-JP Content-Transfer-Encoding:8bit "; $top = $name.' 様<br><br>'; $aisatsu .= "~への会員登録のお申し込みありがとうございます。<br> まだ登録は完了しておりません。下記URLから登録を完了してください。<br><br>"; $html_header = '<doctype html><html><head><meta charset="ISO-2022-JP"></head><body bgcolor="#FFFFCC">'; $html_footer = '</body></html>'; $uniqid = uniqid(); $anchor = '<a href="http://~/php/membership_kakutei.php?from=1">http://sirius5.link/register/confirm/'.$uniqid.'</a>'; $contents="<br><br> ==================================================<br> このメッセージは~より自動的に送信しております。<br> このメールにお心当たりのない場合は、このメールを破棄してください。<br> ==================================================<br> <br> <br> <br> -----------------------------------------------------------<br> ~<br> http://daiko-king.com <br> -----------------------------------------------------------<br> "; ////////////////////////// // 新規登録者宛にメール // ////////////////////////// $message = $html_header.$top.$aisatsu.$anchor.$contents.$html_footer; $to = $mail; $subject = "【~】 仮登録完了"; // 題名 $to = mb_convert_encoding($to, "UTF-8", "auto"); // $toは、自動的にエンコードされない。 $subject = mb_convert_encoding($subject, "UTF-8", "auto"); $message = mb_convert_encoding($message, "UTF-8", "auto"); $header = mb_convert_encoding($header, "UTF-8", "auto"); mb_send_mail($to, $subject, $message, $header); // メール送信 ---------------------------------------------------------------------------------------------------- <a>あいうえお</a> の、あいうえお の部分が実際には存在しないディレクトリに してるのですが、(上記の場合だと、/register/confirmの部分です)それではだめ なのでしょうか。 実際にあるディレクトリだとしたら、たとえば、 https://aaa.com/register/confirm/ASkuCxyxsKxJ08kojrn770Js_jNOCXoD6ZXE0fgKQyI の、A以下の正規表現的な文字列つけることで何がしたいのかわかりません。 説明していただきたいです。正しい方法とスクリプトの書き方をよろしくお願いします。

    • ベストアンサー
    • PHP
  • phpで携帯へのメルマガ配送について

    データベースから特定メアドを引き出しループで送信処理をしています。 ドメイン許可してもDocomoあてが届かない現象があり なにかうまい配送方法はないでしょうか? コードは以下です。 $sql = "select * from master where mailpermission = '$mp'"; $rs = mysql_query($sql,$con); while($row=mysql_fetch_array($rs)) { $toad =$row[7]; $name=$row[2]; $kanrino=$row[0]; //メール送信 $to .= $toad; $subject = $kenmei; $sendman = $postadjpn; $header .= 'From:'. mb_encode_mimeheader($sendman). " <".$postad.">\n"; $header .= "Return-Path:".$postad."\n"; $header .= "Date:"; $header .= date("D, d M Y H:i:s O"); $body .= "\n"; $body .= $name; $body .= "様"; $body .= "\n"; $body .= "\n"; $body .= $postnaiyou; $body .= "\n"; mb_internal_encoding("ISO-2022-JP"); ini_set("mbstring.internal_encoding","UTF-8"); mb_language("uni"); mb_send_mail($to,$subject,$body,$header); $to = ""; $subject = ""; $sendman = ""; $header = ""; $body = ""; } mysql_close($con);

    • 締切済み
    • PHP
  • phpのmb_send_mailで携帯のみ文字化け

    PHPのmb_send_mail関数でメールを送信しています。 メールサーバーはGoogleAppsのを使っています PHPのバージョンは5.1.6 --- 下記ソース --- //日本語と内部文字エンコードの指定 mb_language('ja'); mb_internal_encoding('UTF-8'); $parameter = "-f hoge@example.co.jp";//return_path設定 // ↓コレだと携帯では文字化けしないが、Gmailへ送信すると文字化け //$subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8")); $header = ""; $header .= "From: {$subject}<{$from}>"; $message = str_replace("\r", "", $message); $res = mb_send_mail($to, $subject, $message, $header, $parameter);

    • ベストアンサー
    • PHP
  • MYSQLから取得した日本語をメールすると文字化け

    PHPからiphoneへEメールを送信する処理を作りたいのですが、次のように書いて実行したらメール本文へ表示する 名前の部分(「~さん」の部分)だけが文字化け(「??」になる)したのでDBから取得した$user_nameの文字コードを調べたらUTF-8でした。 また、メールのタイトルとなる$subjectの文字コードを調べたらこちらもUTF-8でした。 タイトルは文字化けしないで、メールの表示ができましたが、DBから取得した文字(名前)は??になります。 文字化けを解決したいのですが、調べても分かりません。 知恵を貸していただけると助かります。 宜しくお願いします。 $email = "****@i.softbank.jp"; $sql = 'SELECT * FROM user_tbl WHERE email = "' . $email . '"'; $q = $dd->prepare( $sql ); $q->execute(); foreach ( $q->fetchAll() as $row) { $user_name = $row['user_name']; } $to = $email; $subject = "お知らせ"; $message =<<<EOM {$user_name} さん こんにちは。 EOM; $add_header = ""; mb_language('Japanese'); mb_internal_encoding("UTF-8"); mb_send_mail($to, $subject, $message, $add_header); os: windows 7 eclipse: Version: 4.2.0 Build SDK: Android 4.1(API 16) PHP 5

    • ベストアンサー
    • PHP
  • PHPで、HTMLメールの際のエラー

    HTMLメールを送る下記スクリプトにおきまして、管理人宛てのメール本文を 見ると、添付画像のように、生のHTML文のついたメールが届いてしまいます。 普通のHTMLメールにするには、どこがどう間違っているのか、ご指導いただき たいです。 ちなみにサーバーはさくらサーバーです。 --------------------------------------------------------------------------------------------------------------- ////////////////////////////////////////// // 新着口コミを管理人にメールで知らせる // ////////////////////////////////////////// $to = "~"; // 管理人宛て $mail_title = " ユーザーが新着口コミを投稿しました。"; $header = "From: ~ Content-Type:text/html; charset=ISO-2022-JP Content-Transfer-Encoding:8bit "; //$uniqid = uniqid(); $to = mb_convert_encoding($to, "UTF-8", "auto"); // $toは、自動的にエンコードされない。 $mail_title = mb_convert_encoding($mail_title, "UTF-8", "auto");    $html_header = '<!DOCTYPE html"><html><meta http-equiv="Content-Type" content="text/html; charset=ISO-2022-JP"></head><body bgcolor="#FFFFCC">';    $html_footer = '</body></html>'; $comment_header = $username." 様\n\n口コミ店舗名:".$shopname."\n\n"; $comment = $html_header."\n\n".$comment_header.$comment."\n\n"; // $comment = str_replace("<br>", "\n", $comment); // $comment = mb_convert_encoding($comment, "UTF-8", "auto"); $comment_anchor = "<a href=\"http://~.com/tokyo/admin/kuchikomi_edit.php?title=".$title."&comment=".$comment_copy."&username=".$username."&shopname=".$shopname."\">口コミ編集</a>"; $comment_anchor = mb_convert_variables($comment_anchor, "UTF-8", $title, $comment_copy, $username, $shopname); $comment = $comment."\n\n".$comment_anchor.$html_footer; $comment = mb_convert_encoding($comment, "UTF-8", "auto"); $header = mb_convert_encoding($header, "UTF-8", "auto"); mb_send_mail($to, $mail_title, $comment, $header); // メール送信

    • ベストアンサー
    • PHP
  • フレームをまたいだ非表示・表示の切り替えについて

    現在、フレーム&MySQLを用いたページを作成しています。 ページを左と右の二つにわけてて、 左のソースは <html> <head> <title>単漢字学習</title> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <H2>単漢字検索項目</H2> <P><b>検索項目を入力して下さい<P>(複数選択可)</P></b></P> <form name="form1" action="demo2.php" method="post" target="migi"> 漢字直接入力エリア <TEXTAREA name = "chokusetsu" cols="5" rows="2" wrap="off"></TEXTAREA><BR><BR> </TEXTAREA> 漢字読み入力エリア <TEXTAREA name = "yomi"cols="5" rows="2" wrap="off"></TEXTAREA><BR><BR> </TEXTAREA> <P>画数</P> <SELECT name="kakusuu"> <OPTION value="" selected>----画数を選択してください----</OPTION> <OPTION value="1">1画</OPTION> <OPTION value="2">2画</OPTION>   中略 </SELECT><BR><BR> <P>部首</P> <SELECT name="busyu"> <OPTION value="" selected>----部首を選択してください----</OPTION> <OPTION value="一部 いち">一部 いち</OPTION> <OPTION value="│部 ぼう">│部 ぼう</OPTION>   中略 </SELECT><BR><BR><BR> <input type="submit" value="送信"> <input type="reset" value="リセット"> </body> </html> となっていて 右ページのソースは <?php require_once("mysql.php"); ?> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=UTF-8"> <input type="hidden" name="ie" value="UTF-8"> <title>7-4 MySQLクラスでのデータの表示</title> </head> <body> <b>入力された条件&nbsp;&nbsp;&nbsp;&nbsp;</b> <?php print "直接入力:"; print $_POST['chokusetsu']; print "&nbsp;&nbsp;&nbsp;&nbsp;読み:"; print $_POST['yomi']; print "&nbsp;&nbsp;&nbsp;&nbsp;画数:"; print $_POST['kakusuu']; print "&nbsp;&nbsp;&nbsp;&nbsp;部首:"; print $_POST['busyu']; print "&nbsp;&nbsp;&nbsp;&nbsp;の検索結果"; $search_key1 = addslashes($_POST['chokusetsu']); $search_key2 = addslashes($_POST['yomi']); $search_key3 = addslashes($_POST['kakusuu']); $search_key4 = addslashes($_POST['busyu']); $mysql = new MySQL; $sql = "SELECT * FROM tankanji WHERE (onyomi like '%$search_key2%' OR kunyomi like '%$search_key2%') AND kanji like '%$search_key1%' AND busyu like '%$search_key4%' AND kakusuu like '%$search_key3%'"; $mysql->query($sql); // 検索件数の表示 ?> <TABLE width="3000" frame="border" border="3" cellspacing="1" cellpadding="3"> <TBODY> <TR><TH>id</TH><TH>漢字</TH><TH>音読み</TH><TH>訓読み</TH><TH>部首</TH><TH>画数</TH></TR> <?php while($row = $mysql->fetch()){ ?> <TR> <TD align="center"><?=$row['id']?></TD> <TD align="center"><?=$row['kanji']?></TD> <TD align="center"><?=$row['onyomi']?></TD> <TD align="center"><?=$row['kunyomi']?></TD> <TD nowrap align="center"><?=$row['busyu']?></TD> <TD align="center"><?=$row['kakusuu']?></TD></TR> <?php } ?> </TBODY></TABLE> </body> </html> こんな感じです。 現在では左ページのテキストボックスやプルダウンメニューから操作をしてデータを右ページに送らなくても右ページにはテーブルが出現してしまってます。この現象を左ページからデータ入力があった場合のみテーブルを表示させたいのですが、このようなことはできるのでしょうか? 誰か詳しい方お願いします。

    • ベストアンサー
    • HTML
  • PHPでmb_send_mail()関数を使っときの件名について

    PHPでmb_send_mail()関数を使っときの件名について mb_send_mail()でメールの送信はできるのですが、件名(Subject)を日本語にすると8文字以上送信すると送信エラーが起こります。同じプログラムをLinuxでやるとうまくいきます。プログラムは以下のようにしています。(mail()関数を使うとこのような問題は起こりませんでした。) mb_language('Japanese'); $subject='メールテスト'; $subject=mb_convert_encoding($subject,'ISO-2022-JP','UTF-8'); $message='Webメールのテストです。'; $message=mb_convert_encoding($message,'ISO-2022-JP','UTF-8'); $head='私から送信されました。<****@****.net>'; $head=mb_convert_encoding($head, 'ISO-2022-JP', 'UTF-8'); $head=mb_encode_mimeHeader($head,'ISO-2022-JP','B'); if(mb_send_mail('****@****.com',$subject,$message,'From:'.$head)){ echo 'おくったよ。<br>'; } else{ echo 'おくれない。'; }  件名の全角での文字数を増やす方法があったら教えてください。  よろしくお願いいたします。 <システム環境>  Windows7(64Bit)  Apache2.2  PHP5.3.2

    • ベストアンサー
    • PHP
  • mb_send_mail で一部文字化けします

    mb_send_mail で一部文字化けします。 URLやキーワードとかそういった文字をいれた変数です。 基本UTF8で作ってます。 mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_regex_encoding("UTF-8"); mb_detect_order("ASCII, JIS, UTF-8, EUC-JP, SJIS"); $subject = "てすと"; $to =$email; $header .= "From:admin@example.jp\n"; $header .= "Return-Path:admin@example.jp\n"; $header .= "Date:"; $header .= date("D, d M Y H:i:s O"); $body .= "\n"; $body .= "◆URL:"; $body .= $url[$count]; mb_send_mail($to,$subject,$body,$header);

    • 締切済み
    • PHP
  • PHP+HTMLの確認画面から入力画面に戻る際のデータ保持について質問

    PHP+HTMLの確認画面から入力画面に戻る際のデータ保持について質問致します。 1.入力→2.確認→3.実行の3ページを作成しましたが、 2.確認で入力した値が間違っていた場合、1.入力に戻って訂正する仕様です 私は2.確認の戻るボタンにjavaのhistory.back();を使ったのですが ブラウザやOSにより、戻った際にデータが保持されていない場合があるとの事だったので 他の方法がないかご教授下さい。サンプルコードを書いて頂くと助かります。 以下、作成したコード 1.入力画面(mail.html) <html> <body> <form action="chk.php" method="post"> 件名:<br> <input type="text" name="subject" size="30" value=""><br> 送信者名:<br> <input type="text" name="name" size="30" value=""><br> メールアドレス:<br> <input type="text" name="mail" size="30" value=""><br> 本文:<br> <textarea name="message" cols="30" rows="5"></textarea><br> <br> <input type="submit" value="確認する">&nbsp&nbsp<input type="reset" value="クリア"> </form> </body> </html> 2.確認画面(chk.php) <?php $name = $_POST["name"]; $message = $_POST["message"]; $subject = $_POST["subject"]; $mail = $_POST["mail"]; ?> <html> <body> <form action="send.php" method="post"> 件名:<?php echo $subject; ?><br> 送信者名:<?php echo $name; ?><br> メールアドレス:<?php echo $mail; ?><br> 本文:<?php echo $message; ?><br> <input type="submit" value="これでOK"> &nbsp&nbsp //下記の戻るボタンで戻るとデータ保持をするようにしたい。history.back以外で。 <input type="button" value="戻る" onclick="history.back();"> <input type="hidden" name="name" value="<?php echo $name; ?>"> <input type="hidden" name="message" value="<?php echo $message; ?>"> <input type="hidden" name="subject" value="<?php echo $subject; ?>"> <input type="hidden" name="mail" value="<?php echo $mail; ?>"> </form> </body> </html> 3.送信画面(send.php) <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); $message = "名前:" . $_POST["name"] . "\n本文:" . $_POST["message"]; if (!mb_send_mail("hoge@example.com", $_POST["subject"], $message, "From: " . $_POST["mail"])) { exit("メールの送信に失敗しました。"); } ?> <html> <body> <p>メールが送信されました。</p> </body> </html> 初心者ですので、わかりやすい表記をお願い致します。

    • 締切済み
    • PHP
  • 自作メールフォームから送信するとメール内容がおかしくなる。

    ※PHP初心者なので、お手柔らかにお願いします。 自作メールフォームからメール送信すると、メールは送れるのですがメールの内容がおかしくなります。 現状は、件名のみ正しく表示され、差出人と本文の内容が空になります。 いろいろなサイトを見て試してみたのですが、どれも同じ結果で何が間違っているのかよくわからず困ってます。 メールの設定として下記を、 mb_language("Japanese"); mb_internal_encoding ("SJIS"); mb_detect_order("ASCII, JIS, UTF-8, EUC-JP, SJIS"); $MailTo = "送付先メールアドレス"; メール送信事態は下記ソースの通りです。 // エンコードして文字列を作成 $Name = mb_convert_encoding($Name, 'JIS', 'auto'); $Header = "From:" .mb_encode_mimeheader($Name). "<" .$Mail. ">\n"; $Subject = "=?iso-2022-jp?B?".base64_encode(mb_convert_encoding("お問い合わせ", 'JIS', 'auto')). "?="; $Message = mb_convert_encoding($Message, "JIS", "auto"); // メール送信処理 $Ret = mb_send_mail($MailTo, $Subject, $Message, $Header);

    • ベストアンサー
    • PHP