質問 > フロント機能 > お問い合わせに添付ファイル |
フロント機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
TigerWalk |
投稿日時: 2011/1/25 16:14
対応状況: −−−
|
半人前 登録日: 2008/11/14 居住地: 投稿: 21 |
Re: お問い合わせに添付ファイル 私もちょうど同じことをしようとしておりましたので、Tips32を参考にして
みましたが、使用するメールテンプレート order_mail_shop.tpl(ショップ向け?)と order_mail.tpl(顧客確認用?)と比べてみましたが 全く同じものでした。 これって関係ないのかな? |
satake7 |
投稿日時: 2010/8/6 18:30
対応状況: −−−
|
半人前 登録日: 2010/2/19 居住地: 葉山・秋谷 投稿: 12 |
Re: お問い合わせに添付ファイル 追記です。
「元のソースですでに、$this->objMailMime = new Mail_mime() が用意されているのでこれを使うのがいいかな」と書きましたが、これを使うと、呼出し側のインスタンス内で2回呼ばれた場合、例えば「お客様と自店宛てに同じものを2通送る場合」など、$this->objMailMimeが初期化されず、不具合が発生します。 具体的には、headerをセットするところで、array_merge()を使っているので、同じキーの内容が書き変わらなかったり、添付ファイルが二重に追加されたりします。 ですので、$this->objMailMimeは使用せず、setTxtBody()の前でその都度、$objMailMime = new Mail_mime() するようにしてください。 これなら大丈夫だと思います。 |
satake7 |
投稿日時: 2010/8/1 10:26
対応状況: −−−
|
半人前 登録日: 2010/2/19 居住地: 葉山・秋谷 投稿: 12 |
Re: お問い合わせに添付ファイル すでに解決済みだとは思いますが、ググってここへ来る人のためにエッセンスのみ(※2.4.4)
・data/class/SC_SendMail.phpの class SC_SendMail に追加します。(ちゃんとやる人は、_Exに追加してください) ・元のソースですでに、$this->objMailMime = new Mail_mime() が用意されているのでこれを使うのがいいかなと。 ・これを呼ぶ前に普通のメールの送信準備($objSendMail->setItem()、$objSendMail->setTo())が済んでいること。 ・$attach にはフルパスのファイル名を入れます。(画像限定) パスが間違っていたり、パーミッションがなかったら添付ファイルが付きません。 ・<form enctype="multipart/form-data">で、html/upload/temp_image にファイルをあげておいてこれを使うのがいいかも。パーミッションを気にしなくてもいいから。 function sendAttachMail($attach) { $header = $this->getTEXTHeader(); $recip = $this->getRecip(); $this->objMailMime->setTxtBody($this->body); foreach ($attach as $key => $val) { if (($ext = pathinfo($val, PATHINFO_EXTENSION)) == "jpg") { $ext = "jpeg"; } $this->objMailMime->addAttachment($val, "image/".$ext); } $bodyParam = array( "head_charset" => "ISO-2022-JP", "text_charset" => "ISO-2022-JP" ); $body = $this->objMailMime->get($bodyParam); $addHeaders = array( "To" => $this->to, "From" => $this->from, "Subject" => $this->subject ); $headers = $this->objMailMime->headers($addHeaders); // メール送信 if (is_array($recip)) { foreach ($recip as $rcpt_to) { $results[] = $this->objMail->send($rcpt_to, $headers, $body); } } else { $results[] = $this->objMail->send($rcpt_to, $headers, $body); } $ret = true; foreach ($results as $result) { if (PEAR::isError($result)) { GC_Utils_Ex::gfPrintLog($result->getMessage()); GC_Utils_Ex::gfDebugLog($header); $ret = false; } } return $ret; } |
george |
投稿日時: 2010/6/11 18:06
対応状況: −−−
|
半人前 登録日: 2010/3/30 居住地: Niigata 投稿: 12 |
Re: お問い合わせに添付ファイル AMUAMUさま
早速のお返事ありがとうございました。 別の記事として投稿してしまい皆さんにご迷惑をかけてしましました。すいません。 もう一度見直して再度質問させて頂きたいと思います。 よろしくお願い致します。 |
AMUAMU |
投稿日時: 2010/6/11 15:11
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: お問い合わせに添付ファイル 引用:
皆さんの記事を参考にしながら作業しているのですが、どうにもいかなくなってしまったので教えて下さい。 どうにもいかないとは、具体的に何でしょう? 質問のコードを見る限り、変数の受け渡しなどが記載ありませんが、PHPの基本部分で何か間違っていませんか? またマルチポストで質問されていましたが(マルチポストは避けましょう)、画面が真っ白はPHPのエラーの場合が殆どです。何らかのコーディングミスなどがあるのではないですか? phpのエラーログを確認されて、見直すことをお勧めします。 また、下記URLページを再度かもしれませんが、ご確認いただくことをお勧めします。 http://xoops.ec-cube.net/modules/tinyd0/index.php?id=8
|
george |
投稿日時: 2010/6/11 13:51
対応状況: −−−
|
半人前 登録日: 2010/3/30 居住地: Niigata 投稿: 12 |
Re: お問い合わせに添付ファイル 皆さんの記事を参考にしながら作業しているのですが、どうにもいかなくなってしまったので教えて下さい。
LC_Page_Contact.phpのprocessに添付ファイルを保管しておく変数を用意し、 $upfile01 = $_FILES['upfile01']['tmp_name']; $upfile_name01 = $_FILES['upfile01']['name']; $upfile_type01 = $_FILES['upfile01']['type']; 同じく、LC_Page_Contact.phpのlfSendMailに、ヘッダ追加処理、 if(file_exists($upfile01)){ $fp = fopen($upfile01, "r") or die("error"); $contents = fread($fp, filesize($upfile01)); fclose($fp); $f_encoded = chunk_split(base64_encode($contents)); $msg .= "\n\n--$boundary\n"; $msg .= "Content-Type: " . $upfile_type01 . ";\n"; $msg .= "\tname=\"$upfile_name01\"\n"; $msg .= "Content-Transfer-Encoding: base64\n"; $msg .= "Content-Disposition: attachment;\n"; $msg .= "\tfilename=\"$upfile_name01\"\n\n"; $msg .= "$f_encoded\n"; $msg .= "--$boundary--"; $toCustomerMail .= $msg; を追加しました。 SC_SendMail.phpに、添付ファイルを送信する機能(muroさんのプログラムを参考にしました)を加えました。 LC_Page_Contact.phpの受け取る所でつまづいていると思うのですが・・・ ご教授の程、よろしくお願いします。 |
tonton |
投稿日時: 2010/1/24 0:25
対応状況: −−−
|
仙人 登録日: 2008/8/14 居住地: 投稿: 437 |
Re: お問い合わせに添付ファイル メールヘッダーをセットしている部分の、content-typeがtext/plainになっているので、multipart/mixedにしないといけないのでは。
あとは、商品ページからセッションで引き回すわけではないので、単純に添付ファイルをつけてお問い合わせを完了し、メールで受け取るのであれば、SC_SendMail.phpのヘッダーの処理部分、 // ヘッダーを返す function getTEXTHeader() の下あたりにgetMULTIHeader()などとしてmultipartのヘッダ追加処理をつけたし、 // TXTメール送信を実行する function sendMail() をコピーして、function sendMultiMail()を作成、あとは、コンタクトメールの送信処理の部分(SC_Helper_Mail.phpのsfSendTemplateMail内)で、$uplaodfileを送信項目に追加して、$uplaodfileがあれば、multiの処理、という分岐を入れれば、もう少しシンプルに出来そうな気もします。 テストはしていないので、他にも何か処理が要るかも知れませんが・・・ |
muro |
投稿日時: 2010/1/23 20:43
対応状況: −−−
|
常連 登録日: 2008/10/12 居住地: 投稿: 33 |
Re: お問い合わせに添付ファイル 受け取って処理することはできましたー。
でも送れない・・・エンコードの処理部分ですかね。。。 メールとかこのへん苦手でして。。。 いろいろ探ってみます! ありがとうございました。 |
seasoft |
投稿日時: 2010/1/23 17:57
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: お問い合わせに添付ファイル Tips_032 では、商品詳細のページクラスに手を加えていたはずです。
(記憶で書いています。違っていたらゴメンなさい。) 同様のカスタマイズが、LC_Page_Contact に必要かと思います。
|
muro |
投稿日時: 2010/1/23 17:51
対応状況: −−−
|
常連 登録日: 2008/10/12 居住地: 投稿: 33 |
Re: お問い合わせに添付ファイル ページでいってもそうですね。。。
Tips32というやつでした。 Tips32を参考にしてデータベースに登録する部分以外をはめこみました。 SC_SendMail.phpに添付ファイル送信用の処理 getFILEHeader()と sendFileMail()をつけたして、 LC_Page_Contact.phpの IfSendMail()にある $objMail->sendMail();を $objMail->sendFileMail($filename);にしました。 $filenameの中身が受け取れていないので、 メールは送信されますが、添付がないという状態です。 SC_SendMail.phpに追加した処理 // ヘッダーを返す★追加 function getFILEHeader() { $arrHeader = $this->getBaseHeader(); $arrHeader['Content-Type'] = "text/plain; charset=\"ISO-2022-JP\""; $arrHeader['Content-Transfer-Encoding'] = "7bit"; return $arrHeader; } // 添付ファイル付きメール送信を実行する★追加 function sendFileMail($filename) { $this->objMailMime = new Mail_mime(); $this->objMailMime->setTXTBody(mb_convert_encoding($this->body, 'JIS')); for($i = 0; $i < count($filename); $i++){ if($filename[$i] !== ""){ $this->objMailMime->addAttachment($filename[$i], 'application/octet-stream', mb_convert_encoding($filename[$i], 'ISO-2022-JP', 'SJIS')); } } $param = array( "text_charset" => "iso-2022-jp", //TEXT用 "text_encoding" => "base64" //TEXT用 ); $this->body = $this->objMailMime->get($param); $header = $this->objMailMime->headers($this->getFILEHeader()); $result = $this->objMail->send($this->getRecip(), $header, $this->body); if (PEAR::isError($result)) { GC_Utils_Ex::gfPrintLog($result->getMessage()); GC_Utils_Ex::gfDebugLog($header); return false; } return true; } |
(1) 2 » |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |