バージョン選択

フォーラム

メニュー

オンライン状況

64 人のユーザが現在オンラインです。 (57 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 63
Sprinterra もっと...

サイト内検索

質問 > フロント機能 > お問い合わせに添付ファイル

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

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 に必要かと思います。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

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 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,899名です
総投稿数は110,002件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.