【发布时间】:2017-02-06 11:07:56
【问题描述】:
在 symfony 中运行 cron 时,我需要将 CSV 文件及其交易详细信息发送给每个用户
我的代码如下生成 csv 数据并通过电子邮件发送
用户数组:
$array = array('name','ticket','history','date','flag','created by','transition');
$f = fopen('php://temp', 'w');
$line = $array;
fputcsv($f, $line, ',');
rewind($f);
$stream_get_contents = stream_get_contents($f);
$sentmail = $this->sendEmail($stream_get_contents);
if($sentmail){
return true;
}else{
return false;
}
fclose($f);
unset($f);
public function sendEmail($csvData){
UserId='1';
$em = $this->getContainer()->get('doctrine')->getManager();
$getstaffuser = $em->getRepository('AdminBundle:User')->find($UserId);
if ($getstaffuser) {
if ($getstaffuser->getEmail()) {
$objEmailTemplate = $em->getRepository('BviTemplateBundle:Emailtemplate')->findOneBy(array('emailkey' => 'KEYFIND', 'status' => 'Active'));
if (!$objEmailTemplate) {
$output->writeln("\n####### Email template not present #######\n");
$logger->info("\n####### Email template not present #######\n");
return "NoEmailTemplate";
}
$attachment = chunk_split($csvData);
$multipartSep = '-----' . md5(time()) . '-----';
$bodydata = $objEmailTemplate->getBody();
$body = "--$multipartSep\r\n"
. "Content-Type: text/plain; charset=ISO-8859-1; format=flowed\r\n"
. "Content-Transfer-Encoding: 7bit\r\n"
. "\r\n"
. "$bodydata\r\n"
. "--$multipartSep\r\n"
. "Content-Type: text/csv\r\n"
. "Content-Transfer-Encoding: base64\r\n"
. "Content-Disposition: attachment; filename=\"Website-Report-" . date("F-j-Y") . ".csv\"\r\n"
. "\r\n"
. "$attachment\r\n"
. "--$multipartSep--";
$to = $getstaffuser->getEmail();
$subject = $objEmailTemplate->getSubject();
$mail = \Swift_Message::newInstance()
->setSubject($subject)
->setFrom($this->getContainer()->getParameter('fos_user.registration.confirmation.from_email'))
->setTo($to);
$mail->setBody($body)
->setContentType('multipart/mixed');
$issent = $this->getContainer()->get('mailer')->send($mail);
if ($issent) {
return 'EmailSent';
} else {
return 'EmailNotSent';
}
} else {
return "NoEmailAddress";
}
} else {
return "NoUser";
}
}
但它不起作用,我收到的电子邮件只是作为附件中的无名文件名的文件,它不是 csv 文件,也没有获取正文内容。
请任何人都可以帮助我。我将感谢最佳答案
【问题讨论】:
标签: php symfony swiftmailer