こんにちは、アプリケーションのニーズに合わせて 2 種類のメールを送信しています。こんな感じで、ユーザーが何かを承認すると、承認した旨のメールが送信され、それ以外の場合は承認後に請求書が 1 通生成され、メールに添付されて送信されます。
今起こっていることは、これら 2 つのメールが 1 分以内にユーザーに送信されるため、最初のメールでは添付ファイルが不要になることです。もう 1 つ、別のユーザーも承認したとします。ちなみに、請求書はユーザーごとに異なります。しかし、2 番目のユーザーの場合、最初のユーザーと 2 番目のユーザーの請求書の両方のファイルが添付されます。
このようなことが起こることはわかっているので、データベース内のユーザーに送信するたびにメールのコピー全体を保存しています。不要な添付ファイルが表示されている最初のケースのデータベースには添付ファイルがなく、2 つの添付ファイルが表示されている 2 番目のケースでは、データベースにのみユーザー 2 に属する添付ファイルのみがあります。
注: このメール全体は、LAMP 環境で CI メール クラスを使用して送信されています。
この以下の関数は、メールを送信するために使用しています。これは、必要に応じてアプリケーション全体で呼び出すヘルパー関数です。
function mail_send($to, $email_text_key, $subject_key_values, $message_key_values,$file)
{
$CI = & get_instance();
$CI->config->load('email_text');
// echo $to;echo $email_text_key;print_r($subject_key_values);print_r($message_key_values);
$subject = $CI->config->item($email_text_key."_email_subject");
$message = $CI->config->item($email_text_key."_email_body");// print_r($subject);print_r($message);
send_mail($to, $subject, $message, $subject_key_values, $message_key_values,$file);
}
function send_mail($to, $subject, $message, $subject_key_values, $message_key_values,$file)
{
$CI = & get_instance();
$CI->config->load('email_text');
// print_r($message_key_values);
foreach ( $subject_key_values as $key => $val ) {
$subject = str_replace ("%$key%", $val, $subject);
}
foreach ( $message_key_values as $key => $val ) {
$message = str_replace ("%$key%", $val, $message);
}
$message = str_replace ("%FAQ%", base_url()."index.php/welcome/faq", $message);
$message = str_replace ("%LOGO%", base_url()."images/logo.png", $message);
$message = str_replace ("%LOGO%", base_url()."images/Icon.ico", $message);
$CI->load->library('email');
$CI->email->from($CI->config->item('from_email'), $CI->config->item('from_email_name'));
$CI->email->to($to);
$CI->email->subject($subject);
$CI->email->message($message);
if($file !='') {
$CI->email->attach($file);
$file_type='pdf';
$file_size = filesize($file);
$fp = fopen($file,'r');
$content = fread($fp,$file_size);
$content = addslashes($content);
fclose($fp);
$CI->email->send();
} else {
$CI->email->send();
}
//make mail copied
$CI->load->model('email_model');
$user_data = array(
'to_email' =>$to,
'subject' =>$subject,
'message' =>$message,
'date_time' => date("Y-m-d H:i:s"),
'file_name' =>$file,
'file_type' =>$file_type,
'file_size' =>$file_size,
'content' =>$content,
);
$CI->email_model->make_email_copy($user_data);
}
注: if および else 条件でメールにファイルを添付しているコードを確認してください。