ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE/branches/stable-2.14.x/webapp/lib/util/mail_send.php @ 12068

Last change on this file since 12068 was 12068, checked in by nagasawa, 11 years ago

#4033:秘密の質問を省略した場合の悪意のある操作を防止するための機能の追加(2.14.x)

File size: 36.6 KB
Line 
1<?php
2/**
3 * @copyright 2005-2008 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7//----- 共通関数
8
9/**
10 * メール送信
11 */
12function t_send_email($address, $subject, $body, $is_receive_mail=true, $from=ADMIN_EMAIL)
13{
14    if (!$is_receive_mail || !db_common_is_mailaddress($address)) {
15        return false;
16    }
17
18    // 改行コード
19    $cr = "\x0D";
20    $lf = "\x0A";
21    $crlf = "\x0D\x0A";
22
23    // 設定値によりMTAに渡すヘッダの区切り記号を分ける
24    if (MAIL_HEADER_SEP === 'CRLF') {
25        $sep = $crlf;
26    } else {
27        $sep = $lf;
28    }
29
30    // header
31    $headers = "MIME-Version: 1.0" . $sep;
32    $headers .= "Content-Type: text/plain; charset=iso-2022-jp" . $sep;
33    $headers .= "From: $from";
34
35    // 半角カナを全角カナに変換
36    if (MAIL_HAN2ZEN) {
37        $subject = mb_convert_kana($subject, "KV");
38        $body = mb_convert_kana($body, "KV");
39    }
40
41    // subject (改行コードを含んではならない)
42    $subject = mb_convert_encoding($subject, "JIS");
43    $subject = str_replace(array($cr, $lf), "", $subject);
44    $subject = '=?ISO-2022-JP?B?'.base64_encode($subject).'?=';
45
46    // body (LF)
47    if (MAIL_WRAP_WIDTH) {
48        $body = t_wordwrap($body, MAIL_WRAP_WIDTH);
49    }
50    $body = mb_convert_encoding($body, "JIS");
51    $body = str_replace($cr, $lf, str_replace($crlf, $lf, $body));
52
53    if (MAIL_SET_ENVFROM) {
54        if (MAIL_ENVFROM) {
55            $f = MAIL_ENVFROM;
56        } else {
57            $f = ADMIN_EMAIL;
58        }
59        $params = '-f' . escapeshellcmd($f);
60        return mail($address, $subject, $body, $headers, $params);
61    } else {
62        return mail($address, $subject, $body, $headers);
63    }
64}
65
66/**
67 * mailテンプレート内容をfetch
68 *
69 * @param string $tpl_name テンプレート名(/templates/mail 直下のファイル)
70 * @param array $params Smartyでassignされる連想配列
71 * @return string Smartyが出力したHTMLの文字列
72 */
73function fetch_mail_m_tpl($tpl_name, $params)
74{
75    $params["OPENPNE_URL"] = OPENPNE_URL;
76    $params["SNS_NAME"] = SNS_NAME;
77    $params["ADMIN_EMAIL"] = ADMIN_EMAIL;
78    $params["CATCH_COPY"] = CATCH_COPY;
79    $params["OPERATION_COMPANY"] = OPERATION_COMPANY;
80    $params["COPYRIGHT"] = COPYRIGHT;
81
82    $smarty = new OpenPNE_Smarty($GLOBALS['SMARTY'], false);
83    $smarty->assign($params);
84    $smarty->assign('inc_signature', fetch_inc_signature($smarty));
85
86    $tpl_name = str_replace('.tpl', '', $tpl_name);
87    if (util_is_unused_mail($tpl_name)) {
88        return false;
89    }
90
91    if ($smarty->template_exists('db:' . $tpl_name)) {
92        $tpl = 'db:' . $tpl_name;
93        $cache_id = $compile_id = 'mail';
94    } else {
95        $place = '';
96        $path = sprintf('templates/mail/%s.tpl', $tpl_name);
97        $tpl = 'file:' . mail_ext_search($path, $place);
98        $cache_id = $compile_id = 'mail_'. $place;
99    }
100
101    $subject_and_body = $smarty->fetch($tpl, $cache_id, $compile_id);
102    return explode("\n", $subject_and_body, 2);
103}
104
105function fetch_inc_signature($smarty)
106{
107    $tpl_db = 'db:inc_signature';
108    if ($smarty->template_exists($tpl_db)) {
109        $tpl = $tpl_db;
110        $cache_id = $compile_id = 'mail';
111    } else {
112        $place = '';
113        $path = 'templates/mail/inc_signature.tpl';
114        $tpl = 'file:' . mail_ext_search($path, $place);
115        $cache_id = $compile_id = 'mail_'. $place;
116    }
117    return $smarty->fetch($tpl, $cache_id, $compile_id);
118}
119
120function mail_ext_search($path, &$place)
121{
122    $dft = OPENPNE_WEBAPP_DIR . '/' . $path;
123    $ext = OPENPNE_WEBAPP_EXT_DIR . '/' . $path;
124    $biz = OPENPNE_WEBAPP_BIZ_DIR . '/' . $path;
125
126    if (USE_EXT_DIR && is_readable($ext)) {
127        $place = 'ext';
128        return $ext;
129    } elseif (USE_BIZ_DIR && is_readable($biz)) {
130        $place = 'biz';
131        return $biz;
132    } elseif (is_readable($dft)) {
133        $place = 'dft';
134        return $dft;
135    }
136
137    return false;
138}
139
140function get_c_template_mail_source($tpl_name)
141{
142    $source = '';
143    if (!($source = db_get_c_template_source($tpl_name))) {
144        include_once 'PHP/Compat/Function/file_get_contents.php';
145
146        $place = '';
147        $tpl_file = $tpl_name . '.tpl';
148        $path = 'templates/mail/' . $tpl_file;
149        if ($tpl = mail_ext_search($path, $place)) {
150            $source = file_get_contents($tpl);
151        }
152    }
153    return $source;
154}
155
156function fetch_send_mail($address, $tpl_name, $params = array(), $force = true, $from = '')
157{
158    $tpl_name .= '.tpl';
159    if ($tpl = fetch_mail_m_tpl($tpl_name, $params)) {
160        list($subject, $body) = $tpl;
161        if ($from) {
162            t_send_email($address, $subject, $body, $force, $from);
163        } else {
164            t_send_email($address, $subject, $body, $force);
165        }
166        return true;
167    } else {
168        return false;
169    }
170}
171
172//-----
173
174//本登録完了メール 登録者へ
175function do_regist_prof_do_regist2_mail_send($c_member_id)
176{
177    $c_member = db_member_c_member4c_member_id($c_member_id, true);
178    $pc_address = $c_member['secure']['pc_address'];
179    $params = array(
180        "c_member" => $c_member,
181    );
182    if (OPENPNE_AUTH_MODE == 'pneid' || OPENPNE_AUTH_MODE == 'slavepne') {
183        $params['login_id'] = db_member_username4c_member_id($c_member_id);
184    }
185    return fetch_send_mail($pc_address, 'm_pc_invite_end', $params);
186}
187
188//招待メール
189function do_h_invite_insert_c_invite_mail_send($c_member_id_invite, $session, $message, $pc_address)
190{
191    $params = array(
192        "c_member" => db_member_c_member4c_member_id($c_member_id_invite),
193        "sid" => $session,
194        "invite_message"=> $message,
195    );
196    return fetch_send_mail($pc_address, 'm_pc_syoutai_mail', $params);
197}
198
199//パスワード再発行用のハッシュメール
200function do_password_query_mail_send($c_member_id, $pc_address, $session)
201{
202    $p = array('id' => t_encrypt($c_member_id), 'session' => $session);
203    $update_password_url = openpne_gen_url('pc', 'page_o_update_password', $p);
204    $params = array(
205        'c_member'   => db_member_c_member4c_member_id($c_member_id),
206        'pc_address' => $pc_address,
207        'update_password_url' => $update_password_url,
208    );
209    if (OPENPNE_AUTH_MODE == 'pneid' || OPENPNE_AUTH_MODE == 'slavepne') {
210        $params['login_id'] = db_member_username4c_member_id($c_member_id);
211    }
212    return fetch_send_mail($pc_address, 'm_pc_password_query', $params);
213}
214
215//パスワード再発行メール(携帯)
216function db_mail_send_m_ktai_password_query($c_member_id, $session)
217{
218    $c_member = db_member_c_member4c_member_id($c_member_id, true);
219    $ktai_address = $c_member['secure']['ktai_address'];
220
221    $p = array('id' => t_encrypt($c_member_id), 'session' => $session);
222    $update_password_url = openpne_gen_url('ktai', 'page_o_update_password', $p);
223    $p = array('kad' => t_encrypt(db_member_username4c_member_id($c_member_id, true)));
224    $login_url = openpne_gen_url('ktai', 'page_o_login', $p);
225    $params = array(
226        'c_member'  => $c_member,
227        'session'  => $new_password,
228        'id'   => $id,
229        'login_url' => $login_url,
230        'update_password_url' => $update_password_url,
231    );
232    if (OPENPNE_AUTH_MODE == 'pneid' || OPENPNE_AUTH_MODE == 'slavepne') {
233        $params['login_id'] = db_member_username4c_member_id($c_member_id);
234    }
235    return fetch_send_mail($ktai_address, 'm_ktai_password_query', $params);
236}
237
238//掲示板が更新されたときのお知らせメール送信(携帯メールアドレスへ)
239function send_bbs_info_mail($c_commu_topic_comment_id, $c_member_id)
240{
241    $comment = db_commu_c_commu_topic_comment4c_commu_topic_comment_id($c_commu_topic_comment_id);
242    $c_member = db_member_c_member4c_member_id_LIGHT($c_member_id);
243
244    $c_commu_id       = $comment['c_commu_id'];
245    $c_commu_topic_id = $comment['c_commu_topic_id'];
246    $topic_name       = $comment['topic_name'];
247    $commu_name       = $comment['commu_name'];
248    $body             = $comment['body'];
249    $image_filename1  = $comment['image_filename1'];
250    $image_filename2  = $comment['image_filename2'];
251    $image_filename3  = $comment['image_filename3'];
252    $nickname = $c_member['nickname'];
253    $p = array('target_c_commu_topic_id' => $c_commu_topic_id);
254    $url              = openpne_gen_url('ktai', 'page_c_bbs', $p);
255    $params = array(
256        "topic_name"      => $topic_name,
257        "commu_name"      => $commu_name,
258        "nickname"        => $nickname,
259        "url"        => $url,
260        "body"            => $body,
261        "image_filename1" => $image_filename1,
262        "image_filename2" => $image_filename2,
263        "image_filename3" => $image_filename3,
264    );
265
266    $tpl = fetch_mail_m_tpl("m_ktai_bbs_info", $params);
267    if (!$tpl) {
268        return false;
269    }
270    list($subject, $body) = $tpl;
271
272    $lst  = db_common_receive_ktai_address_list4c_commu_id($c_commu_id);
273    foreach ($lst as $target_c_member_id => $ktai_address) {
274        if (MAIL_ADDRESS_HASHED) {
275            $from = "t{$c_commu_topic_id}-".t_get_user_hash($target_c_member_id).'@'.MAIL_SERVER_DOMAIN;
276        } else {
277            $from = "t{$c_commu_topic_id}".'@'.MAIL_SERVER_DOMAIN;
278        }
279        $from = MAIL_ADDRESS_PREFIX . $from;
280        t_send_email($ktai_address, $subject, $body, true, $from);
281    }
282}
283
284
285//掲示板が更新されたときのお知らせメール送信(PCメールアドレスへ)
286function send_bbs_info_mail_pc($c_commu_topic_comment_id, $c_member_id)
287{
288    $comment = db_commu_c_commu_topic_comment4c_commu_topic_comment_id($c_commu_topic_comment_id);
289    $c_member = db_member_c_member4c_member_id_LIGHT($c_member_id);
290
291    $c_commu_id       = $comment['c_commu_id'];
292    $c_commu_topic_id = $comment['c_commu_topic_id'];
293    $topic_name       = $comment['topic_name'];
294    $commu_name       = $comment['commu_name'];
295    $body             = $comment['body'];
296    $nickname         = $c_member['nickname'];
297    $p = array('target_c_commu_topic_id' => $c_commu_topic_id);
298    $url              = openpne_gen_url('pc', 'page_c_topic_detail', $p);
299
300    $image_filename1       = $comment['image_filename1'];
301    $image_filename2       = $comment['image_filename2'];
302    $image_filename3       = $comment['image_filename3'];
303
304    $image = $image_filename1 || $image_filename2 || $image_filename3;
305    $params = array(
306        "topic_name" => $topic_name,
307        "commu_name" => $commu_name,
308        "nickname"   => $nickname,
309        "url"        => $url,
310        "body"       => $body,
311        "image_filename1" => $image_filename1,
312        "image_filename2" => $image_filename2,
313        "image_filename3" => $image_filename3,
314    );
315
316    $tpl = fetch_mail_m_tpl("m_pc_bbs_info", $params);
317    if (!$tpl) {
318        return false;
319    }
320    list($subject, $body) = $tpl;
321
322    $lst  = db_common_receive_pc_address_list4c_commu_id($c_commu_id);
323    foreach ($lst as $pc_address) {
324        t_send_email($pc_address, $subject, $body, true);
325    }
326}
327
328//デイリーニュース
329function do_common_send_daily_news()
330{
331    // 改行コード
332    $cr = "\x0D";
333    $lf = "\x0A";
334    $crlf = "\x0D\x0A";
335
336    // 設定値によりMTAに渡すヘッダの区切り記号を分ける
337    if (MAIL_HEADER_SEP === 'CRLF') {
338        $sep = $crlf;
339    } else {
340        $sep = $lf;
341    }
342
343    $list = db_member_c_member_list4daily_news();
344    $count_receive_daily_news = db_member_count_c_member_is_receive_daily_news();
345    $count_daily_news_day = count(explode(',', DAILY_NEWS_DAY));
346    $str_daily_news_day = str_replace(',', '・', DAILY_NEWS_DAY);
347    $send_2_flag = 0;
348    $day_arr = array('日','月','火','水','木','金','土');
349    $day = date('w');
350    if (strstr(DAILY_NEWS_DAY, $day_arr[$day])) $send_2_flag = 1;
351    $logstr = '【SNS名】' . SNS_NAME . $sep
352        . '【URL】' . OPENPNE_URL . $sep
353        . '【SNSメンバー総数】' . number_format(count(db_member_c_member_id_list4null())) . $sep
354        . '【デイリーニュース送信対象総数】' . $sep
355        . '毎回:' . number_format($count_receive_daily_news['every_day']) . $sep
356        . '週' . $count_daily_news_day . '回(' . $str_daily_news_day . '):' . number_format($count_receive_daily_news['daily_news_day']) . $sep
357        . '【配信日】' . date("Y/m/d") . '(' . $day_arr[$day] . ')' . $sep .$sep
358        . "c_member_id\t通し番号\tタイムスタンプ" . $sep;
359    print mb_convert_encoding($logstr, 'JIS');
360
361    $i = 1;
362    $date = date("Y. n. j");
363    $daily_news_head = p_common_c_siteadmin4target_pagename('daily_news_head');
364    $daily_news_foot = p_common_c_siteadmin4target_pagename('daily_news_foot');
365    foreach ($list as $key => $value) {
366        if ($value['is_receive_daily_news'] == 1 ||
367            ($value['is_receive_daily_news'] == 2 && $send_2_flag)) {
368
369            $c_member_id = $value['c_member_id'];
370            print $c_member_id."\t" . $i++ ."\t". date("Y-m-d H:i:s") . $sep;
371
372            $c_member_secure = db_member_c_member_secure4c_member_id($c_member_id);
373            $pc_address = $c_member_secure['pc_address'];
374
375            $params = array(
376                'c_member' => db_member_c_member4c_member_id($c_member_id),
377                'date'     => $date,
378                'ashiato_num' => db_ashiato_c_ashiato_num4c_member_id($c_member_id),
379                'diary_friend_list' => p_h_home_c_diary_friend_list4c_member_id($c_member_id, 5),
380                'c_commu_topic_comment_list'
381                                    => db_commu_c_commu_topic_comment_list4c_member_id($c_member_id, 5),
382                'daily_news_head' => $daily_news_head,
383                'daily_news_foot' => $daily_news_foot,
384            );
385            fetch_send_mail($pc_address, 'm_pc_daily_news', $params);
386        }
387    }
388}
389
390//誕生日メール
391function do_common_send_birthday_mail()
392{
393    $birth_list = db_member_c_member_list4birthday_mail();
394
395    foreach ($birth_list as $birth_member) {
396        $friend_list = db_friend_c_friend_list4c_member_id2($birth_member['c_member_id']);
397
398        foreach ($friend_list as $friend) {
399            if ($friend['is_receive_mail']) {
400
401                $c_member_secure = db_member_c_member_secure4c_member_id($friend['c_member_id']);
402                $pc_address = $c_member_secure['pc_address'];
403
404                $params = array(
405                    "birth_member" => $birth_member,
406                    "friend" => $friend,
407                );
408                fetch_send_mail($pc_address, 'm_pc_birthday_mail', $params);
409            }
410        }
411    }
412}
413
414//スケジュールメール
415function do_common_send_schedule_mail()
416{
417    $c_schedule_list = db_schedule_c_member_list4mail();
418
419    $send_list = array();
420    foreach ($c_schedule_list as $value) {
421        $c_member_id = $value['c_member_id'];
422        $send_list[$c_member_id][] = $value;
423    }
424
425    foreach ($send_list as $key => $value) {
426        $c_member_secure = db_member_c_member_secure4c_member_id($key);
427        $pc_address = $c_member_secure['pc_address'];
428
429        $params = array(
430            "c_member" => db_member_c_member4c_member_id_LIGHT($key),
431            "c_schedule_list" => $value,
432        );
433        fetch_send_mail($pc_address, 'm_pc_schedule_mail', $params);
434    }
435}
436
437//◆紹介文が編集されました!メール
438function do_f_intro_edit_update_c_friend_send_mail($c_member_id, $target_c_member_id)
439{
440    $c_member_to = db_member_c_member4c_member_id($target_c_member_id, true);
441    $pc_address = $c_member_to['secure']['pc_address'];
442    $is_receive_mail = $c_member_to['is_receive_mail'];
443
444    $params = array(
445        "c_member_to"   => db_member_c_member4c_member_id_LIGHT($target_c_member_id),
446        "c_member_from" => db_member_c_member4c_member_id_LIGHT($c_member_id),
447    );
448    return fetch_send_mail($pc_address, 'm_pc_friend_intro', $params, $is_receive_mail);
449}
450
451//コミュニティに参加したときのメール
452function do_inc_join_c_commu_send_mail($c_commu_id, $c_member_id_join)
453{
454    $c_commu = db_commu_c_commu4c_commu_id($c_commu_id);
455    $c_member_admin = db_member_c_member4c_member_id($c_commu['c_member_id_admin'], true);
456
457    $pc_address = $c_member_admin['secure']['pc_address'];
458    $is_receive_mail = ($c_member_admin['is_receive_mail'] && $c_commu['is_send_join_mail']);
459
460    $params = array(
461        'c_commu' => $c_commu,
462        'c_member_admin' => db_member_c_member4c_member_id_LIGHT($c_commu['c_member_id_admin']),
463        'c_member_join'  => db_member_c_member4c_member_id_LIGHT($c_member_id_join),
464    );
465    return fetch_send_mail($pc_address, 'm_pc_join_commu', $params, $is_receive_mail);
466}
467
468//◆友達リンク承認完了メール
469function do_h_confirm_list_insert_c_friend_mail_send($c_member_id_from, $u)
470{
471    $c_member_from = db_member_c_member4c_member_id($c_member_id_from, true);
472    $pc_address = $c_member_from['secure']['pc_address'];
473    $is_receive_mail = $c_member_from['is_receive_mail'];
474
475    $params = array(
476        "c_member_to"   => db_member_c_member4c_member_id($c_member_id_from),
477        "c_member_from" => db_member_c_member4c_member_id($u),
478    );
479    return fetch_send_mail($pc_address, 'm_pc_syounin_friend', $params, $is_receive_mail);
480}
481
482//メールアドレス変更メール
483function do_h_config_1_mail_send($target_c_member_id, $session, $pc_address)
484{
485    $params = array(
486        "c_member" => db_member_c_member4c_member_id($target_c_member_id),
487        "sid"      => $session,
488    );
489    if (OPENPNE_AUTH_MODE == 'pneid' || OPENPNE_AUTH_MODE == 'slavepne') {
490        $params['login_id'] = db_member_username4c_member_id($target_c_member_id);
491    }
492    return fetch_send_mail($pc_address, 'm_pc_change_mail', $params);
493}
494
495//メールアドレス変更メール
496function do_h_regist_mail_mail_send($target_c_member_id, $session, $pc_address)
497{
498    $params = array(
499        "c_member" => db_member_c_member4c_member_id($target_c_member_id),
500        "sid"      => $session,
501    );
502    return fetch_send_mail($pc_address, 'm_pc_regist_mail', $params);
503}
504
505//あしあとお知らせメール
506function do_common_send_ashiato_mail($c_member_to, $c_member_from)
507{
508    $c_member_to = db_member_c_member4c_member_id($c_member_to, true);
509    $c_member_from = db_member_c_member4c_member_id($c_member_from);
510
511    $pc_address = $c_member_to['secure']['pc_address'];
512    $ktai_address = $c_member_to['secure']['ktai_address'];
513
514    $params = array(
515        'c_member_to'   => $c_member_to,
516        'c_member_from' => $c_member_from,
517    );
518
519    //pc
520    fetch_send_mail($pc_address, 'm_pc_ashiato', $params);
521
522    //ktai
523    $p = array('kad' => t_encrypt(db_member_username4c_member_id($c_member_to['c_member_id'], true)));
524    $params['login_url'] = openpne_gen_url('ktai', 'page_o_login', $p);
525    fetch_send_mail($ktai_address, 'm_ktai_ashiato', $params);
526}
527
528//◆メッセージ受信メール
529function do_common_send_message_mail_send($c_member_id_to, $c_member_id_from, $subject = '', $body = '', $c_message_id)
530{
531    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
532    $pc_address = $c_member_to['secure']['pc_address'];
533    $is_receive_mail = $c_member_to['is_receive_mail'];
534
535    $params = array(
536        'c_member_to' => db_member_c_member4c_member_id($c_member_id_to),
537        'c_member_from' => db_member_c_member4c_member_id($c_member_id_from),
538        'subject' => $subject,
539        'body' => $body,
540        'c_message_id' => $c_message_id,
541    );
542    return fetch_send_mail($pc_address, 'm_pc_message_zyushin', $params, $is_receive_mail);
543}
544
545//◆承認依頼メッセージ受信メール
546function do_common_send_message_syoudaku_mail_send($c_member_id_to, $c_member_id_from)
547{
548    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
549    $pc_address = $c_member_to['secure']['pc_address'];
550    $is_receive_mail = $c_member_to['is_receive_mail'];
551
552    $params = array(
553        "c_member_to"   => db_member_c_member4c_member_id($c_member_id_to),
554        "c_member_from" => db_member_c_member4c_member_id($c_member_id_from),
555    );
556    return fetch_send_mail($pc_address, 'm_pc_message_syounin', $params, $is_receive_mail);
557}
558
559// ログインURL通知メール
560function do_insert_c_member_mail_send($c_member_id, $password, $ktai_address)
561{
562    $c_member_secure = db_member_c_member_secure4c_member_id($c_member_id);
563    $p = array('kad' => t_encrypt(db_member_username4c_member_id($c_member_id, true)));
564    $params['url'] = openpne_gen_url('ktai', 'page_o_login', $p);
565    return fetch_send_mail($ktai_address, 'm_ktai_login_regist_end', $params);
566}
567
568//招待されたときのメール(ktai)
569function h_invite_insert_c_invite_mail_send($session, $c_member_id_invite, $mail, $message)
570{
571    $params['SNS_NAME'] = SNS_NAME;
572    $p = array('ses' => $session);
573    $params['url'] = openpne_gen_url('ktai', 'page_o_regist_pre', $p);
574    $params['c_member'] = db_member_c_member4c_member_id($c_member_id_invite);
575    $params['message'] = $message;
576    return fetch_send_mail($mail, 'm_ktai_regist_invite', $params);
577}
578
579//メールアドレスの変更および
580//PCで今まで使っていたメンバーが新たに携帯メールアドレスを登録したときに送られるメール
581function do_mail_sns_change_ktai_mail_send($c_member_id, $session, $ktai_address)
582{
583    $params['SNS_NAME'] = SNS_NAME;
584    $p = array('id' => $c_member_id, 'ses' => $session);
585    $params['url'] = openpne_gen_url('ktai', 'page_o_login2', $p);
586    return fetch_send_mail($ktai_address, 'm_ktai_change_ktai', $params);
587}
588
589//ログインURL通知メール
590function do_mail_sns_login_get_mail_send($c_member_id, $sender)
591{
592    $c_member_secure = db_member_c_member_secure4c_member_id($c_member_id);
593    $p = array('kad' => t_encrypt(db_member_username4c_member_id($c_member_id, true)));
594    $params['url'] = openpne_gen_url('ktai', 'page_o_login', $p);
595    return fetch_send_mail($sender, 'm_ktai_login_get', $params);
596}
597
598// コミュニティ紹介
599function do_common_send_message_syoukai_commu_mail_send($c_member_id_to, $c_member_id_from)
600{
601    //メール
602    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
603    $pc_address = $c_member_to['secure']['pc_address'];
604    $is_receive_mail = $c_member_to['is_receive_mail'];
605
606    $params = array(
607        "c_member_to"   => db_member_c_member4c_member_id($c_member_id_to),
608        "c_member_from" => db_member_c_member4c_member_id($c_member_id_from),
609    );
610    return fetch_send_mail($pc_address, 'm_pc_message_syoukai_commu', $params, $is_receive_mail);
611}
612
613// コミュニティ参加者全員にメール
614function do_common_send_message_commu_send_msg($c_member_id_to, $c_member_id_from, $c_commu_id)
615{
616    //メール
617    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
618    $c_commu = db_commu_c_commu4c_commu_id($c_commu_id);
619    $pc_address = $c_member_to['secure']['pc_address'];
620    $is_receive_mail = $c_member_to['is_receive_mail'];
621
622    $params = array(
623        'c_member_to'   => db_member_c_member4c_member_id($c_member_id_to),
624        'c_member_from' => db_member_c_member4c_member_id($c_member_id_from),
625        'c_commu'       => $c_commu,
626    );
627    return fetch_send_mail($pc_address, 'm_pc_message_commu_send_msg', $params, $is_receive_mail);
628}
629
630// メンバー紹介
631function do_common_send_message_syoukai_member_mail_send($c_member_id_to, $c_member_id_from)
632{
633    //メール
634    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
635    $pc_address = $c_member_to['secure']['pc_address'];
636    $is_receive_mail = $c_member_to['is_receive_mail'];
637
638    $params = array(
639        "c_member_to"   => db_member_c_member4c_member_id($c_member_id_to),
640        "c_member_from" => db_member_c_member4c_member_id($c_member_id_from),
641    );
642    return fetch_send_mail($pc_address, 'm_pc_message_syoukai_member', $params, $is_receive_mail);
643}
644
645// イベント紹介
646function do_common_send_message_event_invite_mail_send($c_member_id_to, $c_member_id_from)
647{
648    //メール
649    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
650    $pc_address = $c_member_to['secure']['pc_address'];
651    $is_receive_mail = $c_member_to['is_receive_mail'];
652
653    $params = array(
654        "c_member_to"   => db_member_c_member4c_member_id($c_member_id_to),
655        "c_member_from" => db_member_c_member4c_member_id($c_member_id_from),
656    );
657    return fetch_send_mail($pc_address, 'm_pc_message_event_invite', $params, $is_receive_mail);
658}
659
660//イベントメッセージ
661function do_common_send_message_event_message_mail_send($c_member_id_to, $c_member_id_from)
662{
663    //メール
664    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
665    $pc_address = $c_member_to['secure']['pc_address'];
666    $is_receive_mail = $c_member_to['is_receive_mail'];
667
668    $params = array(
669        "c_member_to"   => db_member_c_member4c_member_id($c_member_id_to),
670        "c_member_from" => db_member_c_member4c_member_id($c_member_id_from),
671    );
672    return fetch_send_mail($pc_address, 'm_pc_message_event_message', $params, $is_receive_mail);
673}
674
675function do_common_send_mail_regist_get($session, $sender, $aff_id)
676{
677    // メール送信
678    $p = array(
679        'ses' => $session,
680        'aff_id' => $aff_id,
681    );
682    $params['url'] = openpne_gen_url('ktai', 'page_o_regist_pre', $p);
683    return fetch_send_mail($sender, 'm_ktai_regist_get', $params);
684}
685
686//登録完了メール(管理者宛)
687function do_common_send_mail_regist4admin($c_member_id)
688{
689    $p_list = db_member_c_profile_list4null();
690    $c_profile_list = array();
691    foreach ($p_list as $key => $value) {
692         $c_profile_list[]=$p_list[$key];
693    }
694
695    $c_member = db_member_c_member4c_member_id($c_member_id, true, true, 'private');
696    $c_member['c_member_invite'] = db_member_c_member4c_member_id_LIGHT($c_member['c_member_id_invite']);
697    if (OPENPNE_USE_POINT_RANK) {
698        $c_member['point'] = db_point_get_point($c_member_id);
699        $c_member['rank'] = db_point_get_rank4point($c_member['point']);
700    }
701
702    $params = array(
703        "c_member" => $c_member,
704        "c_profile_list" => $c_profile_list,
705    );
706    if (OPENPNE_AUTH_MODE == 'pneid' || OPENPNE_AUTH_MODE == 'slavepne') {
707        $params['login_id'] = db_member_username4c_member_id($c_member_id);
708    }
709    return fetch_send_mail(ADMIN_EMAIL, 'm_admin_regist', $params);
710}
711
712//退会完了メール(管理者宛)
713function do_common_send_mail_taikai4admin($c_member_id, $reason)
714{
715    $p_list = db_member_c_profile_list4null();
716    $c_profile_list = array();
717    foreach ($p_list as $key => $value) {
718         $c_profile_list[]=$p_list[$key];
719    }
720
721    $c_member = db_member_c_member4c_member_id($c_member_id, true, true, 'private');
722    $c_member['c_member_invite'] = db_member_c_member4c_member_id_LIGHT($c_member['c_member_id_invite']);
723    if (OPENPNE_USE_POINT_RANK) {
724        $c_member['point'] = db_point_get_point($c_member_id);
725        $c_member['rank'] = db_point_get_rank4point($c_member['point']);
726    }
727
728    $params = array(
729        "c_member" => $c_member,
730        "c_profile_list" => $c_profile_list,
731        "reason" => $reason,
732    );
733    if (OPENPNE_AUTH_MODE == 'pneid' || OPENPNE_AUTH_MODE == 'slavepne') {
734        $params['login_id'] = db_member_username4c_member_id($c_member_id);
735    }
736    return fetch_send_mail(ADMIN_EMAIL, 'm_admin_taikai', $params);
737}
738
739//退会完了メール(PC)
740function do_common_send_mail_taikai_end_pc($c_member_id)
741{
742    $c_member = db_member_c_member4c_member_id($c_member_id, true);
743    $pc_address = $c_member['secure']['pc_address'];
744    $params = array(
745        "c_member" => $c_member,
746    );
747    if (OPENPNE_AUTH_MODE == 'pneid' || OPENPNE_AUTH_MODE == 'slavepne') {
748        $params['login_id'] = db_member_username4c_member_id($c_member_id);
749    }
750    return fetch_send_mail($pc_address, 'm_pc_taikai_end', $params);
751}
752
753//退会完了メール(携帯)
754function do_common_send_mail_taikai_end_ktai($c_member_id)
755{
756    $c_member = db_member_c_member4c_member_id($c_member_id, true);
757    $ktai_address = $c_member['secure']['ktai_address'];
758    $params = array(
759        "c_member" => $c_member,
760    );
761    if (OPENPNE_AUTH_MODE == 'pneid' || OPENPNE_AUTH_MODE == 'slavepne') {
762        $params['login_id'] = db_member_username4c_member_id($c_member_id);
763    }
764    return fetch_send_mail($ktai_address, 'm_ktai_taikai_end', $params);
765}
766
767//◆メッセージ受信メール(携帯)
768function do_common_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from, $subject = '', $body = '')
769{
770    $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
771    $ktai_address = $c_member_to['secure']['ktai_address'];
772    $is_receive_ktai_mail = $c_member_to['is_receive_ktai_mail'];
773    $p = array('kad' => t_encrypt(db_member_username4c_member_id($c_member_to['c_member_id'], true)));
774    $login_url = openpne_gen_url('ktai', 'page_o_login', $p);
775
776    $params = array(
777        'c_member_to'   => db_member_c_member4c_member_id($c_member_id_to),
778        'c_member_from' => db_member_c_member4c_member_id($c_member_id_from),
779        'login_url' => $login_url,
780        'subject' => $subject,
781        'body' => $body,
782    );
783    return fetch_send_mail($ktai_address, 'm_ktai_message_zyushin', $params, $is_receive_ktai_mail);
784}
785
786function put_mail_queue($address, $subject, $body, $is_receive_mail=true, $from=ADMIN_EMAIL)
787{
788    if (!$is_receive_mail || !db_common_is_mailaddress($address)) {
789        return false;
790    }
791
792    // 改行コード
793    $cr = "\x0D";
794    $lf = "\x0A";
795    $crlf = "\x0D\x0A";
796
797    // header
798    $headers['MIME-Version'] = "1.0";
799    $headers['Content-Type'] = "text/plain; charset=iso-2022-jp";
800    $headers['From'] = $from;
801    $headers['To'] = $address;
802
803    // 半角カナを全角カナに変換
804    if (MAIL_HAN2ZEN) {
805        $subject = mb_convert_kana($subject, "KV");
806        $body = mb_convert_kana($body, "KV");
807    }
808
809    // subject (改行コードを含んではならない)
810    $subject = str_replace(array($cr, $lf), "", $subject);
811    $subject = mb_convert_encoding($subject, "JIS");
812    $headers['Subject'] = '=?ISO-2022-JP?B?'.base64_encode($subject).'?=';
813
814    // body (LF)
815    if (MAIL_WRAP_WIDTH) {
816        $body = t_wordwrap($body, MAIL_WRAP_WIDTH);
817    }
818
819    $body = mb_convert_encoding($body, "JIS");
820    $body = str_replace($cr, $lf, str_replace($crlf, $lf, $body));
821
822    include_once 'Mail/Queue.php';
823
824    $db_opt = array(
825        "type" => "db",
826        "dsn" => $GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn'],
827        "mail_table" => "mail_queue",
828    );
829    $mail_opt = array(
830        "driver"=>"mail",
831    );
832
833    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] === 'pgsql') {
834        $db_opt['sequence'] = 'mail_queue_seq_id';
835    }
836
837    $mail_mime = new Mail_mime();
838    $mail_mime->setTXTBody($body);
839    $body = $mail_mime->get(array("text_charset"=>"ISO-2022-JP"));
840    $body = addslashes($body);
841    $headers = $mail_mime->headers($headers);
842
843    if (MAIL_SET_ENVFROM) {
844        if (MAIL_ENVFROM) {
845            $f = MAIL_ENVFROM;
846        } else {
847            $f = ADMIN_EMAIL;
848        }
849        $params = '-f' . escapeshellcmd($f);
850        $mail_opt['param']= $params;
851        $mail_queue  = new Mail_Queue($db_opt, $mail_opt);
852        return $mail_queue->put($from, $address, $headers, $body);
853    } else {
854        $mail_queue  = new Mail_Queue($db_opt, $mail_opt);
855        return $mail_queue->put($from, $address, $headers, $body);
856    }
857}
858
859// ランクアップしたメンバーにメール送信(PC/ktai)
860function send_mail_pcktai_rank_up($c_member_id, $before_rank, $after_rank)
861{
862    $c_member = db_member_c_member4c_member_id($c_member_id, true);
863
864    if (!empty($c_member['secure']['pc_address'])) {
865        $to_rank_up_mail_pc = true;
866        $to_rank_up_mail_ktai = false;
867    } else {
868        $to_rank_up_mail_pc = false;
869        $to_rank_up_mail_ktai = true;
870    }
871
872    // メンバーの受信設定を取得
873    $c_member_config = db_member_c_member_config4c_member_id($c_member_id);
874    if (isset($c_member_config['SEND_RANK_UP_MAIL_PC'])) {
875        $to_rank_up_mail_pc = (bool)$c_member_config['SEND_RANK_UP_MAIL_PC'];
876    }
877    if (isset($c_member_config['SEND_RANK_UP_MAIL_KTAI'])) {
878        $to_rank_up_mail_ktai = (bool)$c_member_config['SEND_RANK_UP_MAIL_KTAI'];
879    }
880
881    $result_pc = true;
882    $result_ktai = true;
883
884    // PCに送信
885    if ($to_rank_up_mail_pc) {
886        $to = $c_member['secure']['pc_address'];
887        $params = array(
888            'c_member'    => $c_member,
889            'before_rank' => $before_rank,
890            'after_rank'  => $after_rank,
891        );
892        $result_pc = fetch_send_mail($to, 'm_pc_rank_up', $params);
893    }
894    // 携帯に送信
895    if ($to_rank_up_mail_ktai) {
896        $to = $c_member['secure']['ktai_address'];
897
898        $p = array('kad' => t_encrypt(db_member_username4c_member_id($c_member_id, true)));
899        $login_url = openpne_gen_url('ktai', 'page_o_login', $p);
900
901        $params = array(
902            'c_member'    => $c_member,
903            'before_rank' => $before_rank,
904            'after_rank'  => $after_rank,
905            'login_url'   => $login_url,
906        );
907        $result_ktai = fetch_send_mail($to, 'm_ktai_rank_up', $params);
908    }
909
910    return ($result_pc && $result_ktai);
911}
912
913// ランクアップしたら管理者にメール送信
914function send_mail_admin_rank_up($c_member_id, $before_rank, $after_rank)
915{
916    $c_member = db_member_c_member4c_member_id_LIGHT($c_member_id);
917
918    $params = array(
919        'c_member'    => $c_member,
920        'before_rank' => $before_rank,
921        'after_rank'  => $after_rank,
922        'now' => date('Y-m-d H:i:s'),
923    );
924    return fetch_send_mail(ADMIN_EMAIL, 'm_admin_rank_up', $params);
925}
926
927function do_common_send_mail_c_commu_admin_change($c_member_id_to, $c_commu_id)
928{
929    $c_member_to  = $c_member = db_member_c_member4c_member_id($c_member_id_to, true);
930    $c_commu = db_commu_c_commu4c_commu_id($c_commu_id);
931    $to_address = '';
932
933    $params = array(
934        'c_member_to' => $c_member_to,
935        'c_commu' => $c_commu,
936    );
937
938    if (!empty($c_member_to['secure']['pc_address'])) {
939        $to_address = $c_member_to['secure']['pc_address'];
940        return fetch_send_mail($to_address, 'm_pc_c_commu_admin_change', $params);
941    } else {
942        $p = array('kad' => t_encrypt(db_member_username4c_member_id($c_member['c_member_id'], true)));
943        $params['login_url'] = openpne_gen_url('ktai', 'page_o_login', $p);
944        $to_address = $c_member_to['secure']['ktai_address'];
945        return fetch_send_mail($to_address, 'm_ktai_c_commu_admin_change', $params);
946    }
947}
948
949function do_common_send_mail_biz_group_admin_change($biz_group_id_to, $biz_group_id)
950{
951    require_once OPENPNE_MODULES_BIZ_DIR . '/biz/lib/mysql_functions.php';
952
953    $biz_group_member_to = db_member_c_member4c_member_id($biz_group_id_to, true);
954    $biz_group = biz_getGroupData($biz_group_id);
955    $params = array(
956        'biz_group_member_to' => $biz_group_member_to,
957        'biz_group' => $biz_group,
958    );
959    $to_address = $biz_group_member_to['secure']['pc_address'];
960    return fetch_send_mail($to_address, 'm_pc_group_admin_change', $params);
961}
962
963//携帯個体識別番号を登録する必要がある場合に送られるメール(新規登録用)
964function do_mail_sns_regist_ktai_id_mail_send_pre($session, $ktai_address)
965{
966    $params['SNS_NAME'] = SNS_NAME;
967    $p = array('ses' => $session);
968    $params['url'] = openpne_gen_url('ktai', 'page_o_regist_ktai', $p);
969    return fetch_send_mail($ktai_address, 'm_ktai_regist_ktai_id', $params);
970}
971
972// 日記コメントが追加されたときのお知らせメール送信(携帯メールアドレスへ)
973function send_diary_comment_info_mail($c_diary_comment_id, $c_member_id)
974{
975    $comment = _do_c_diary_comment4c_diary_comment_id($c_diary_comment_id);
976    $target_c_member_id = $comment['c_member_id_author'];
977
978    // コメントした人=日記オーナーの場合は通知しない
979    if ($target_c_member_id == $c_member_id) {
980        return false;
981    }
982
983    // 日記オーナーの通知設定が無ければ通知しない
984    $target_c_member_config = util_get_c_member_config($target_c_member_id);
985    if (!$target_c_member_config['SEND_DIARY_COMMENT_MAIL_KTAI']) {
986        return false;
987    }
988
989    $c_member = db_member_c_member4c_member_id_LIGHT($c_member_id);
990    $target_c_member = db_member_c_member_secure4c_member_id($target_c_member_id);
991    $c_diary_id = $comment['c_diary_id'];
992    $c_diary = db_diary_get_c_diary4id($c_diary_id);
993
994    $p = array('target_c_diary_id' => $c_diary_id);
995    $url = openpne_gen_url('ktai', 'page_fh_diary', $p);
996
997    $params = array(
998        'subject' => $c_diary['subject'],
999        'nickname' => $c_member['nickname'],
1000        'body' => $comment['body'],
1001        'url' => $url,
1002        'image_filename1' => $comment['image_filename_1'],
1003        'image_filename2' => $comment['image_filename_2'],
1004        'image_filename3' => $comment['image_filename_3'],
1005        'id' => $c_diary_comment_id,
1006    );
1007
1008    $ktai_address = $target_c_member['ktai_address'];
1009    if (MAIL_ADDRESS_HASHED) {
1010        $from = "bc{$c_diary_id}-" . t_get_user_hash($target_c_member_id) . '@' . MAIL_SERVER_DOMAIN;
1011    } else {
1012        $from = "bc{$c_diary_id}" . '@' . MAIL_SERVER_DOMAIN;
1013    }
1014    $from = MAIL_ADDRESS_PREFIX . $from;
1015
1016    return fetch_send_mail($ktai_address, 'm_ktai_diary_comment_info', $params, true, $from);
1017}
1018
1019?>
Note: See TracBrowser for help on using the repository browser.