我们在做活动或者开发插件的时候 ,时常为了通知用户就是用系统的email发送,但是如果你发送的内容是是日语或者其他语言的时,出现了乱码,发送email代码如下。
发送email代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | private function sendEmail($email,$Subject,$Content) { try{ if(!empty($email)) { $mail = Mage::getModel('core/email') ->setToEmail($email) ->setBody($Content) ->setSubject($Subject) ->setFromEmail('noreply@sky8g.com') ->setFromName('SKY8G') ->setType('html'); $mail->send(); } } }catch (Exception $e){ echo $e->getMessage(); } |
1 2 3 | $email //发送的email地址 $Subject, //主题 $Content //内容 |
解决办法:
zend_email
类里面设置字符集为utf-8
即可 ,更改如下就好了
Magento发送Email是通过Zend
1. Magento 1使用的是zend framework1的代码进行发送
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $config = array( 'ssl' => 'ssl', 'port' => 465, 'auth' => 'login', 'username' => $username, 'password' => $password ); $transport = new \Zend_Mail_Transport_Smtp('hwsmtp.exmail.qq.com', $config); $mail = new \Zend_Mail(); $mail->setBodyText('This is the text of the mail.'); $mail->setFrom($fromemail, 'Some Sender'); $mail->addTo($toemail, 'Some Recipient'); $mail->setSubject('TestSubject'); $mail->send($transport); |
2. Magento 2使用的是在zend framwork 2中的代码进行发送
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $message = new \Zend\Mail\Message(); $message->setBody('This is the body'); $message->setFrom($fromemail); $message->addTo($tomail); $message->setSubject('Test subject'); $smtpOptions = new \Zend\Mail\Transport\SmtpOptions(); $smtpOptions->setHost('hwsmtp.exmail.qq.com') ->setConnectionClass('login') ->setName('hwsmtp.exmail.qq.com') ->setConnectionConfig(array( 'username' => $username, 'password' => $pwd, )); $transport = new \Zend\Mail\Transport\Smtp($smtpOptions); $transport->send($message); |
以上Magento发送Email都是经过测试ok的。
这个虽然简洁,但是用户量貌似少
这个功能也是蛮好的