如何将图像发送到电子邮箱?

时间:2012-12-16 03:34:35

标签: php phpmailer

我正在使用PHPmailer(http://phpmailer.worxware.com/)课程通过电子邮件发送表单信息。在表单内部有一个这样的图像:

<form.....>

<div><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(42, 42); ?></div>


</form>

如何通过电子邮件发送该图片?谢谢。

2 个答案:

答案 0 :(得分:2)

使用AddAttachment方法或撰写HTML邮件,并将图片包含为src链接。

附件:http://code.google.com/a/apache-extras.org/p/phpmailer/wiki/AdvancedMail
链接:http://code.google.com/a/apache-extras.org/p/phpmailer/wiki/BasicMail

答案 1 :(得分:0)

除非您有一个文件输入字段,您通过该字段将图像上传到服务器,否则您将无法通过PHPMailer(或以任何其他方式)发送它。

<form>
    ...
    <input type="file" />
    ...
</form>

即如果您确实想要发送附加到电子邮件的图像。另一方面,如果您想发送一封电子邮件,其中包含嵌入在电子邮件正文中的图像代码,那么我猜您正在寻找一种发送HTML电子邮件的方式,这也是PHPMailer支持的。这是一个如何做到这一点的例子(注意图像本身需要公开访问)。

<?php
/**
* Sending an HTML email through PHPMailer and SMTP...
*/
require_once('PHPMailer.class.php');

$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch

$mail->IsSMTP(); // telling the class to use SMTP

try {
    $mail->CharSet = 'utf-8';
    $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
    $mail->SMTPSecure = 'tls';
    $mail->SMTPAuth   = true;                  // enable SMTP authentication
    $mail->Host       = "smtp.example.com"; // sets the SMTP server
    $mail->Port       = 587;                    // set the SMTP port for the GMAIL server
    $mail->Username   = "user@example.com"; // SMTP account username
    $mail->Password   = "password";        // SMTP account password
    $mail->AddReplyTo('user@example.com', 'Sending User');
    $mail->AddAddress('user_2@example.com', 'Receiving User');
    $mail->SetFrom('user@example.com', 'Sending User');
    $mail->Subject = 'Image';
    $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
    $mail->MsgHTML('<html><body><img src="http://example.com/path_to_image.jpg" width="xxx" height="xxx" /></body></html>'));
    $mail->Send();
    echo "Message Sent OK<p></p>\n";
} catch (phpmailerException $e) {
    echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
    echo $e->getMessage(); //Boring error messages from anything else!
}
?>

对于HTML电子邮件,他们有自己的一套规则和最佳做法。即如果您打算做比发送图像更复杂的事情,您应该使用像this one这样的CSS内联,避免使用background-image之类的内容等。