안녕하세요, kboard_mail()을 통해 게시판 내용을 메일로 보내는 기능을 구현해보았는데요
한번에 200명한테 메일을 보내서 그런가 처음 5명정도는 메일이 차단되었다고 관리자메일로 왔고, 그다음부터는 보낼수 있는 메일 수 한도에 도달했다고 메일이 와서
한번 보낼 때 20명이나 30명씩 쪼개서 메일을 보내고싶은데 가능할까요 ? 코드는 아래쪽에 첨부하였습니다!
*현재 smtp는 wp smtp 플러그인을 이용하고 있고, GMAIL API를 사용하고 있습니다.
add_action('kboard_document_insert', 'insert_function', 10, 4);
function insert_function() {
$this_mail = $user->user_email;
$url = new KBUrl();
$temp_board_title = 0;
$mail = kboard_mail();
$mail->headers = $headers;
$mail->to = $this_mail;
$mail->title = apply_filters('kboard_latest_alerts_subject', '메일제목', $content);
$mail->content .= '게시판내용';
$mail->url = $url->getDocumentRedirect($content->uid);
$mail->url_name = __('Go to Homepage', 'kboard');
$mail->attachments = apply_filters('kboard_latest_alerts_attachments', $content->getMailAttachments(), $content);
$mail->send();
}
안녕하세요~^^
KBoard 플러그인의 kboard_mail 함수는
워드프레스 wp_mail 함수를 활용하고 있습니다.
숨은 참조로 여러 명에게 메일을 전송하려면
아래 관련 링크 참고해보세요.
https://www.cosmosfarm.com/threads/document/37113
wp_mail 함수에 대한 자세한 내용은
아래의 링크를 참고해보세요.
https://developer.wordpress.org/reference/functions/wp_mail/
고맙습니다.
wp_mail로 여러명에게 메일 전송되는 것은 확인했는데 현재 보내야할 사람이 100명이면
10명씩 끊어서 메일을 보내는 방법이 있을까요 ?
메일 수신자가 100명일 때 10명씩 wp_mail 함수를 활용하시려면
우선, 사용자 전체 목록을 가져온 후
배열에 10명씩 분리해서 저장해야 합니다.
그 다음, 배열의 반복문을 통해서 10명씩 담긴 이메일 주소로
wp_mail 함수를 활용해서 메일을 전송하는 방법을 고려해보시겠어요?
고맙습니다.
안녕하세요 친절한 답변 감사합니다
wp_mail() 함수 실행 후 딜레이를 주고싶어 sleep() 함수를 사용했습니다.
sleep()함수를 사용하니 sleep에서 준 시간만큼 게시판 글 작성에서 멈춰있고, 다른 창 켜서 서버에 접속해도 접속이 안되더라구요..
서버에 영향 안가게 비동기로 딜레이를 줄 수 있는 방법이 있을까요 ?
백그라운드에서 프로세스가 실행되게 하시려면
배치 프로그램을 작성하시거나 크론 등을 활용해주셔야 할 듯합니다.
관련해서 구글에 검색해보시면 참고해보실 만한 자료가 많습니다.
고맙습니다.
add_action('kboard_document_insert', 'insert_function', 10, 4); 필터도 크론으로 실행할 수가 있을까요 ??
'insert_function' 안에 $mail->send(); 함수 실행시킨후에 delay를 주려고하는거거든요..!
워드프레스 액션을 활용해서 크론 기능을 사용하는 건
프로그램을 작성하기 나름일 듯합니다.
워드프레스 크론 관련해서는 아래 공식 문서도 참고해보세요.
https://developer.wordpress.org/plugins/cron/
고맙습니다.