【问题标题】:Swiftmailer sends one message but not anotherSwiftmailer 发送一条消息但不发送另一条消息
【发布时间】:2019-09-25 22:06:32
【问题描述】:

我的任务是创建一个在线商店。当用户将商品添加到购物篮并开始下订单时,他/她和其中一位经理将使用 Swiftmailer 收到有关订单的电子邮件。

由于某种原因,只收到了给经理的电子邮件;给用户的不是。

这是我的代码:

public static function mailOrder($order_id, $user_email){
    $transport = (new Swift_SmtpTransport(App::$app->getProperty('smtp_host'), App::$app->getProperty('smtp_port'), App::$app->getProperty('smtp_protocol')))
        ->setUsername(App::$app->getProperty('smtp_login'))
        ->setPassword(App::$app->getProperty('smtp_password'))
    ;
    $mailer = new Swift_Mailer($transport);
    ob_start();
    require APP . '/views/mail/mail_order_admin.php';
    require APP . '/views/mail/mail_order_user.php';
    $bodyAdmin = ob_get_clean();
    $bodyUser = ob_get_clean();
    $message_client = (new Swift_Message("Your order №{$order_id} on " . App::$app->getProperty('shop_name')))
        ->setFrom([App::$app->getProperty('smtp_login') => App::$app->getProperty('shop_name')])
        ->setTo($user_email)
        ->setBody($bodyUser, 'text/html')
    ;
    $message_admin = (new Swift_Message("Сделан заказ №{$order_id}"))
        ->setFrom([App::$app->getProperty('smtp_login') => App::$app->getProperty('shop_name')])
        ->setTo(App::$app->getProperty('admin_email'))
        ->setBody($bodyAdmin, 'text/html')
    ;
    $result = $mailer->send($message_client);
    $result = $mailer->send($message_admin);
    unset($_SESSION['cart']);
    unset($_SESSION['cart_qty']);
    unset($_SESSION['cart_sum']);
    unset($_SESSION['cart.currency']);
    $_SESSION['success'] = 'Thank for Order';
}

【问题讨论】:

  • 您需要展示您所做的调试工作——例如,调用send 的返回值是什么? Swiftmailer 是否有调试选项来显示更多它在做什么?你检查过你的错误日志吗?
  • [2019-09-25 17:30:59] 错误文本:给定邮箱中的地址 [admin_email] 不符合 RFC 2822, 3.6.2。 |文件:/Applications/MAMP/htdocs/ishop2.loc/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php |线路:355

标签: php swiftmailer


【解决方案1】:

从您发布的错误消息来看,这表明从App::$app->getProperty('admin_email') 返回的任何内容都不是电子邮件地址——它可能将属性名称作为电子邮件地址返回,这对任何人都没有用。检查它:

var_dump(App::$app->getProperty('admin_email'));

然后确保您的配置中有正确的值。

【讨论】:

  • 非常感谢您的帮助,但我找到了解决此问题的方法关于缓冲的问题是,缓冲选项应该是这样的 ' // 创建消息 ob_start(); $bodyAdmin = 需要 APP 。 '/views/mail/mail_order_admin.php'; $bodyAdmin =ob_get_clean(); ob_start(); $bodyUser = 需要 APP 。 '/views/mail/mail_order_user.php'; $bodyUser =ob_get_clean();'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
相关资源
最近更新 更多