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

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

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

#4033:r12049,r12073,r12074,r12075,r12076の変更をマージ(2.14.x)

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