/**
* Save mail message or messages in a folder to be sent at a later date.
*
* @param string $to
* @param string $format
* @return \Pop\Mail\Mail
*/
public function saveTo($to = null, $format = null)
{
$dir = null !== $to ? $to : getcwd();
if (null === $this->message->getMessage()) {
$this->message->init();
}
$messageBody = $this->message->getMessage();
$headers = $this->buildHeaders();
// Send as group message
if ($this->group) {
$email = 'To: ' . (string) $this->queue . $this->message->getEol() . 'Subject: ' . $this->subject . $this->message->getEol() . $headers . $this->message->getEol() . $this->message->getEol() . $messageBody;
$emailFileName = null !== $format ? $format : ($emailFileName = '0000000001-' . time() . '-popphpmail');
// Save the email message.
file_put_contents($dir . DIRECTORY_SEPARATOR . $emailFileName, array(), $email);
} else {
// Iterate through the queue and send the mail messages.
$i = 1;
foreach ($this->queue as $rcpt) {
$fileFormat = null;
$subject = $this->subject;
$message = $messageBody;
// Set the recipient parameter.
$to = isset($rcpt['name']) ? $rcpt['name'] . " <" . $rcpt['email'] . ">" : $rcpt['email'];
// Replace any set placeholder content within the subject or message.
foreach ($rcpt as $key => $value) {
$subject = str_replace('[{' . $key . '}]', $value, $subject);
$message = str_replace('[{' . $key . '}]', $value, $message);
if (null !== $format) {
if (null !== $fileFormat) {
$fileFormat = str_replace('[{' . $key . '}]', $value, $fileFormat);
} else {
$fileFormat = str_replace('[{' . $key . '}]', $value, $format);
}
}
}
$email = 'To: ' . $to . $this->message->getEol() . 'Subject: ' . $subject . $this->message->getEol() . $headers . $this->message->getEol() . $this->message->getEol() . $message;
if (null !== $fileFormat) {
$emailFileName = sprintf('%09d', $i) . '-' . time() . '-' . $fileFormat;
} else {
$emailFileName = sprintf('%09d', $i) . '-' . time() . '-popphpmail';
}
// Save the email message.
file_put_contents($dir . DIRECTORY_SEPARATOR . $emailFileName, $email);
$i++;
}
}
return $this;
}