我刚刚发现了Swiftmailer for PHP,它看起来效果很好。
然而,在发送邮件期间,我想跟踪已发送的内容和时间,因此我希望在每封已发送的邮件之后执行一些数据库操作。知道如何实现这个目标吗?
我有数据库插入的代码等。但我不知道,在哪里添加这段代码。我不知道在哪里可以访问个别邮件。
我这样发送:
foreach($email as $id => $to) {
$message->addTo($to);
}
// Send the message
$result = $mailer->send($message);
不知何故,我必须访问个别邮件。
第二次编辑(因为太宽泛):
问题是如何在每封已发送的电子邮件之后执行单独的操作,以便分别记录发送的内容,每个接收者的日期和时间。
答案 0 :(得分:1)
你需要这样做。
val renamedDf = df.withColumnRenamed("No","product_id").
withColumnRenames("name","product_name")
在您的代码中,我确信所有电子邮件地址都会添加到一封电子邮件中,而您需要在一封电子邮件中添加一个电子邮件地址,然后循环生成电子邮件。
答案 1 :(得分:1)
除了Naveed的出色建议外,还有另一种解决方案可能对您有效,而且是消息记录器。
在我看来,它会将所有邮件保存在内存中,因此根据您发送的邮件数量,它可能适合也可能不适合。
因此,您将记录器添加到邮件程序中:
$mailer = Swift_Mailer::newInstance(
Swift_SmtpTransport::newInstance('localhost', 25)
);
$logger = new Swift_Plugins_MessageLogger();
$mailer->registerPlugin($logger);
然后你发出你的消息,这些消息将被MessageLogger捕获。
之后,您可以遍历它们并获取所需的插入信息或者您拥有的信息:
$result = $mailer->send($message);
/* @var Swift_Message $msg */
foreach($logger->getMessages() as $msg) {
var_dump($msg->getTo());
var_dump($msg->getFrom());
var_dump($msg->getSubject());
var_dump($msg->getBody());
var_dump($msg->getDate());
}
希望有所帮助。