如何在YII中发送电子邮件正文中的图像?

时间:2015-10-26 05:14:41

标签: php yii2

这是我想在集体中发送图像的发送邮件功能的代码。

public function SendMail($id) {
    $message = new YiiMailer('', array());
    $message->setFrom('abc@gmail.com', 'test');
    $message->setTo('pqr@gmail.com');
    $message->setSubject('Test');
    $message->IsHTML(true);

    $message->setBody(??????);

    if ($message->send()) {

  }
 }

在yii中给我设置体内发送图像的代码。

我不知道如何在集体中发送图像?

2 个答案:

答案 0 :(得分:4)

这些

怎么样?
$message[] = Yii::$app->mailer->compose('downNotify', [
    'image' => Url::to('@app/web/mail/images/logo.png')
])

$message->setBody($message);

Refer Here

Yii::$app->mailer->compose('embed-email', ['imageFileName' => '/path/to/image.jpg'])
// ...
->send();

<img src="<?= $message->embed($imageFileName); ?>">

Refer Here

$uploadedFile = CUploadedFile::getInstance($model,'anexo'); $msg->attach($uploadedFile);

或者这也是

$image = Swift_Image::fromPath(dirname(Yii::app()->getBasePath()) . '/images/someimage.jpg');
$cid = $message->embed($image);    
$message->setBody(array('cid' => $cid), 'text/html');

所以在受保护的/views/mail/test.php:

<b>An embedded inline image:</b><br><br>
<img src="<?php echo $cid; ?>" alt="WTF went wrong?" />

或者太太(添加为附件

Yii::setPathOfAlias('webroot.images.mail', '/path/to/your/images/mail/dir');

答案 1 :(得分:0)

我最近找到了一种方法。我的解决方案需要将phpMailer更新到5.2.x,因为之前的版本使用的是set_magic_quotes_runtime(),它在PHP 5.4及更高版本中被删除。如果使用5.3,则不需要更新phpMailer。

phpMailer有一种方法可以通过在主体中放置占位符然后将图像分配给占位符来嵌入图像。

在你的身体里(必须是html)你可以像这样添加占位符:

<img src="cid:header"/>

然后,在您发送邮件的地方,您将图像分配给占位符,如下所示:

Yii::app()->mailer->IsHTML(true);
$path = Yii::getPathOfAlias('application.views.email');
Yii::app()->mailer->AddEmbeddedImage($path . DIRECTORY_SEPARATOR. "emailHeader.png", "header", "alertHeader.png");

在我的情况下,图像与电子邮件模板位于同一个视图文件夹中。 AddEmbeddedImage有3个参数:

  • 图片路径
  • cid标识符
  • 图片名称将显示在电子邮件中