우리메일(ggmailing) 대량메일(그룹) 발송 오류
CMS/프레임워크 | Rhymix 1.9 |
---|---|
개발 언어 | PHP 7.2 |
메일 작성 세팅 후 그룹 선택하고 메일 발송을 하면 서버 오류가 발생합니다.
[07-Jul-2020 13:11:44 Etc/GMT-9] PHP Exception: ArgumentCountError #0 "Too few arguments to function ggmailingAdminModel::getGgmailingAdminSendEmail(), 0 passed in /public_html/files/cache/template/modules/ggmailing/tpl/send.html.php on line 96 and exactly 1 expected" in modules/ggmailing/ggmailing.admin.model.php on line 57
#0 /public_html/files/cache/template/modules/ggmailing/tpl/send.html.php(96): ggmailingAdminModel->getGgmailingAdminSendEmail()
#1 /public_html/classes/template/TemplateHandler.class.php(358): include()
#2 /public_html/classes/template/TemplateHandler.class.php(156): TemplateHandler->_fetch()
#3 /public_html/classes/display/HTMLDisplayHandler.php(87): TemplateHandler->compile()
#4 /public_html/classes/display/DisplayHandler.class.php(77): HTMLDisplayHandler->toDoc()
#5 /public_html/classes/module/ModuleHandler.class.php(1163): DisplayHandler->printContent()
#6 /public_html/index.php(52): ModuleHandler->displayContent()
XE시절에는 테스트를 해보지 않아 라이믹스에서만의 문제인지는 잘 모르겠습니다. 현재는 라이믹스 입니다.
send.html
<!--#include("./header.html")-->
<!--@if(Context::get('type')!='status')-->
<h3 class="sub_title">{$lang->send_list}</h3>
<!--@else-->
<h3 class="sub_title">메일전송 현황</h3>
<!--@end-->
<table class="index_table">
<span>Total:{$total_count}, Page:{$page}/{$total_page}</span>
<thead>
<tr>
<th rowspan="2">no.</th>
<th>{$lang->sender_nickname}</th>
<th>{$lang->sender_email}</th>
<th>{$lang->regdate}</th>
<th>{$lang->receive_nickname}</th>
<th>{$lang->receive_email}</th>
<!--@if(Context::get('type')!='status')--><th>{$lang->send_start}</th><!--@else--><th>상태</th><!--@end-->
<th>{$lang->delete}</th>
</tr>
<tr style="border-bottom:1px solid #000;">
<th colspan="2">{$lang->title}</td>
<th colspan="6">{$lang->content}</td>
</tr>
</thead>
<tbody>
<!--@foreach($mail_info as $key => $val)-->
<tr style="border-top:2px solid #ddd;">
<td rowspan="2">{$key}</td>
<td>{cut_str($val->ggmailing_sender_nickname,8,'...')}</td>
<td>{cut_str($val->ggmailing_sender_email,10,'...')}</td>
<td>{zdate($val->regdate,'Y-m-d H:i:s')}</td>
<td>
{@ $nick_name = explode(',',$val->ggmailing_receive_nickname); }
<!--@for($i=0;$nick_name[$i];$i++)-->
{@ $cnt = $i; }
<!--@end-->
{$nick_name[0]}
<!--@if($config->sender_num > 1 && $nick_name[1])-->{$lang->outof} {$cnt}{$lang->persons}<!--@end-->
</td>
<td>
{@ $email_address = explode(',',$val->ggmailing_receive_email); }
<!--@for($i=0;$email_address[$i];$i++)-->
{@ $cnt = $i; }
<!--@end-->
{$email_address[0]}
<!--@if($config->sender_num > 1 && $email_address[1])-->{$lang->outof} {$cnt}{$lang->email}<!--@end-->
</td>
<script>
jQuery(document).ready(function() {
var url = './index.php';
var formData = new FormData();
var act = 'dispGgmailingRequest';
formData.append("act",act);
var ggmailing_document_srl = '{$val->ggmailing_document_srl}';
formData.append("ggmailing_document_srl",ggmailing_document_srl);
var ggmailing_send_srl = '{$val->ggmailing_send_srl}';
formData.append("ggmailing_send_srl",ggmailing_send_srl);
jQuery.ajax({
url: url,
type: 'POST',
data: formData,
async: true,
beforeSend: function (data) {
jQuery(".wfsr").show();
},
success: function (data) {
//alert(data);
jQuery(".wfsr").hide();
var result = JSON.parse(data);
if(result.is_sendok == 'Y') document.getElementById('ggstatus_{$key}').innerHTML = '{$lang->send_complete}';
else if(result.is_sendok == 'B') document.getElementById('ggstatus_{$key}').innerHTML = '대기열';
else if(result.is_sendok == 'W') document.getElementById('ggstatus_{$key}').innerHTML = '전송대기';
else if(result.is_sendok == 'S') document.getElementById('ggstatus_{$key}').innerHTML = '전송중';
else if(result.is_sendok == 'E') document.getElementById('ggstatus_{$key}').innerHTML = '오류';
//else if(!result) document.getElementById('ggstatus_{$key}').innerHTML = '서버점검중';
else jQuery("#ggsend_{$key}").show();
},
global: false,
cache: false,
contentType: false,
processData: false
});
return false;
})
</script>
<td width="60" class="center">
{@
$oGgmailingAdminModel = getAdminModel('ggmailing');
$ggstatus_key = $oGgmailingAdminModel->getGgmailingAdminSendEmail();
}
<!--@if($ggstatus_key->data[0]->is_sendok == 'W')-->
{@ $is_sendok_msg = $lang->send_complete; }
<!--@elseif($ggstatus_key->data[0]->is_sendok == 'N')-->
{@ $is_sendok_msg = '대기'; }
<!--@end-->
<div id="ggstatus_{$key}">{$is_sendok_msg}</div>
<!--@if(Context::get('type')!='status')-->
<form action="/" method="post" id="ggsend_{$key}" style="display:none;">
<input type="hidden" name="module" value="admin" />
<input type="hidden" name="act" value="procGgmailingAdminSendOk" />
<input type="hidden" name="ggmailing_send_srl" value="{$val->ggmailing_send_srl}" />
<input type="hidden" name="page" value="{$page}" />
<input type="submit" class="xet_btn medium light" value="{$lang->send_start}" />
</form>
<!--@else-->
전송안됨
<!--@end-->
</td>
<td width="60" class="center">
<form action="/" method="post" name="delform_{$key}">
<input type="hidden" name="module" value="admin" />
<input type="hidden" name="act" value="procGgmailingAdminDel" />
<input type="hidden" name="ggmailing_send_srl" value="{$val->ggmailing_send_srl}" />
<a href="#" onclick="javascript:if(confirm('삭제하시겠습니까?')) document.delform_{$key}.submit(); else return false;" class="xet_btn medium red">{$lang->delete}</a>
</form>
</td>
</tr>
<tr>
<td colspan="2">{cut_str($val->ggmailing_title,10,'...')}</td>
<td colspan="6">{cut_str(htmlspecialchars($val->ggmailing_content),150,'...')}</td>
</tr>
<!--@end-->
</table>
</table>
<!--@if(Context::get('type')!='status')-->
<div style="width:100%;margin:10px 0 auto;text-align:right;">
<form action="/" method="post" name="sendall">
<input type="hidden" name="module" value="admin" />
<input type="hidden" name="act" value="procGgmailingAdminAllSendOk" />
<input type="hidden" name="page" value="{$page}" />
<a href="#" onclick="javascript:if(confirm('대기중인 모든 메일을 전송하시겠습니까?')) document.sendall.submit(); else return false;" class="xet_btn medium blue">모든 대기중인 메일을 전송</a>
</form>
</div>
<!--@end-->
<form action="/" method="post" class="ggm_pagination">
<input type="hidden" name="error_return_url" value="" />
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="{$act}" />
<ul>
<li class="disabled"|cond="!$page || $page == 1"><a href="{getUrl('page', '')}">« {$lang->first_page}</a></li>
<!--@while($page_no = $page_navigation->getNextPage())-->
{@$last_page = $page_no}
<li class="active"|cond="$page_no == $page"><a href="{getUrl('page', $page_no)}">{$page_no}</a></li>
<!--@end-->
<li class="disabled"|cond="$page == $page_navigation->last_page"><a href="{getUrl('page', $page_navigation->last_page)}" title="{$page_navigation->last_page}">{$lang->last_page} »</a></li>
</ul>
</form>
<!--#include("./footer.html")-->
php 파일의 57번째 라인
function getGgmailingAdminSendEmail($args){
$output = executeQueryArray('ggmailing.getGgmailingAdminSendEmail', $args);
return $output;
}
댓글 7
->getGgmailingAdminSendEmail() 로 사용되어서 그렀습니다
function getGgmailingAdminSendEmail($args=null) 처럼 수정해주세요
ps. http://sejin7940.co.kr/xe_tips/117103
function init() {
}
function getGgmailingAdminList($args){
$output = executeQueryArray('ggmailing.getGgmailingAdminList', $args);
return $output;
}
function getGgmailingAdminSend($args){
$output = executeQueryArray('ggmailing.getGgmailingAdminSend', $args);
return $output;
}
function getGgmailingAdminSmsList($args){
$output = executeQueryArray('ggmailing.getGgmailingAdminSmsList', $args);
return $output;
}
function getGgmailingAdminSms($args){
$output = executeQueryArray('ggmailing.getGgmailingAdminSms', $args);
return $output;
}
function getGgmailingAdminSmsSend($args){
$output = executeQueryArray('ggmailing.getGgmailingAdminSmsSend', $args);
return $output;
}
function getEmailAddrList($args){
$output = executeQueryArray('ggmailing.getEmailAddrList', $args);
return $output;
}
function getEmailAddrAllowList($args){
$output = executeQueryArray('ggmailing.getEmailAddrAllowList', $args);
return $output;
}
function getGroupEmailAddrList($args){
$output = executeQueryArray('ggmailing.getGroupEmailAddrList', $args);
return $output;
}
function getGroupEmailAddrAllowList($args){
$output = executeQueryArray('ggmailing.getGroupEmailAddrAllowList', $args);
return $output;
}
function getGgmailingAdminEmail($args){
$output = executeQueryArray('ggmailing.getGgmailingAdminEmail', $args);
return $output;
}
function getGgmailingAdminSendEmail($args){
$output = executeQueryArray('ggmailing.getGgmailingAdminSendEmail', $args);
return $output;
}
function getGgmailingAdminMemberList($args){
$output = executeQueryArray('ggmailing.getGgmailingAdminMemberList', $args);
return $output;
}
function getGgmailingAdminGateway($args){
$output = executeQueryArray('ggmailing.getGateway', $args);
return $output;
}
}
?>
모든 함수를 다 똑같이 고쳐줘야 할까요???
getGgmailingAdminSendEmail 에서만 나타나고 있으니 고치시면 되는데..
위스킨에서 $ggstatus_key = $oGgmailingAdminModel->getGgmailingAdminSendEmail(); 를 따로 호출 한 이유가 궁금하네요.
getGgmailingAdminSendEmail 여기에 들어간 쿼리가 무엇이냐에 따라 args가 필수일 경우가 잇어서 = null을 기본값으로 주어도되는지 아닌지부터 판단해보셔야할 부분인 것 같습니다.
getGgmailingAdminSendEmail 니까.. getGgmailingAdminSendEmail 만 해주셔도 됩니다.
함수 지정할때 초기값이 꼭 필요한건 아니고
다른 곳에서 함수 호출할때 변수를 전달하고 있으면 문제 되진 않거든요
단지 지금처럼 아무 변수 없이 호출할때만 문제되는거여서