效果:
- 需要QQ中配置对应的授权码,如才使用SMTP就获取SMTP的授权码:
2.在回调中处理或者队列或者定时任务中处理。上代码
//邮件发送 (做开关控制)
if ($is_mail == 1) {
\Yii::warning('is_mail:' . $is_mail);
$mail = new SendMail($order->store_id, $order->id, $this->order_type);
$mail->send();
}
//发送邮件方法,这里主要针对YII2框架,其他框架对应方法即可
public function send()
{
$mail_setting = MailSetting::findOne(['store_id' => $this->store_id, 'is_delete' => 0, 'status' => 1]);
if (!$mail_setting) {
return false;
}
if ($this->type == 0) {
$order = Order::findOne(['id' => $this->order_id]);
$goods_list = $this->getOrderGoodsList($this->order_id);
} elseif ($this->type == 1) {
$order = MsOrder::find()->where(['id' => $this->order_id])->asArray()->one();
$goods_list = $this->getMsOrderGoodsList($this->order_id);
} elseif ($this->type == 2) {
$order = PtOrder::findOne(['id' => $this->order_id]);
$goods_list = $this->getPtOrderGoodsList($this->order_id);
} elseif ($this->type == 3) {
$order = YyOrder::find()->where(['id' => $this->order_id])->asArray()->one();
$goods_list = $this->getYyOrderGoodsList($this->order_id);
}
$store = Store::findOne($this->store_id);
$receive = str_replace(",", ",", $mail_setting->receive_mail);
$receive_mail = explode(",", $receive);
$res = true;
foreach ($receive_mail as $mail) {
try {
$mailer = \Yii::$app->mailer;
$mailer->transport = $mailer->transport->newInstance('smtp.qq.com', 465, 'ssl');
$mailer->transport->setUsername($mail_setting->send_mail);
$mailer->transport->setPassword($mail_setting->send_pwd);
$compose = $mailer->compose('setMail', [
'store_name' => $store->name,
'goods_list'=>$goods_list,
'order'=>$order,
'type'=>$this->type
]);
$compose->setFrom($mail_setting->send_mail); //要发送给那个人的邮箱
$compose->setTo($mail); //要发送给那个人的邮箱
$compose->setSubject($mail_setting->send_name); //邮件主题
$res = $compose->send();
} catch (\Exception $e) {
\Yii::warning('邮件发送失败:' . $e->getMessage());
}
}
return $res;
}