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

source: OpenPNE/trunk/webapp/lib/util/mail_send.php @ 7096

Last change on this file since 7096 was 7096, checked in by ebihara, 15 years ago

#2343:互換性維持のため、do_common_send_message_mail_send_ktai()の第三引数と第四引数を指定することなくメッセージを送信できるように変更

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