当HTML内容PHP中的图像时,电子邮件不会发送

时间:2013-08-21 11:21:41

标签: php html-email

我使用普通的php mail()函数发送电子邮件。这在localhost上工作正常。

但是在网上,当我尝试使用<img ../>标签发送包含身体图像的邮件时,电子邮件将不会发送。实际上mail函数返回true。即使我的收件箱不会得到任何内容。

当我删除<img>代码并尝试时,电子邮件会收到收件箱。

请帮忙

谢谢

$this->checkAuth();

//headers
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html; charset=iso-8859-1" . "\r\n";
$headers .= 'From: ' . $from . ' <' . $from . '>' . "\r\n";
$headers .= 'Reply-To: ' . $from . ' ' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

@mail($to, $subject, $message, $headers);

$this->_exit();

3 个答案:

答案 0 :(得分:0)

如果我们能够看到您的代码,那么

会有所帮助,但我会在这里找到并检查您的垃圾邮件文件夹,并确保图像标签的核心格式正确,并且电子邮件脚本不包含任何错误。< / p>

这里也是一个有用的链接http://css-tricks.com/sending-nice-html-email-with-php/

答案 1 :(得分:0)

你只是发送一个HTML邮件吗?

某些邮件扫描程序不允许仅使用html邮件并且也需要纯文本邮件,可能是因为您发送的图像被报告为垃圾邮件。 这可以阻止你的邮件被发送,就php而言它已被发送。

看看:http://kevinjmcmahon.net/articles/22/html-and-plain-text-multipart-email-/

或代码:

//specify the email address you are sending to, and the email subject
$email = 'email@example.com';
$subject = 'Email Subject';

//create a boundary for the email. This 
$boundary = uniqid('np');

//headers - specify your from email address and name here
//and specify the boundary for the email
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: Your Name \r\n";
$headers .= "To: ".$email."\r\n";
$headers .= "Content-Type: multipart/alternative;boundary=" . $boundary . "\r\n";

//here is the content body
$message = "This is a MIME encoded message.";
$message .= "\r\n\r\n--" . $boundary . "\r\n";
$message .= "Content-type: text/plain;charset=utf-8\r\n\r\n";

//Plain text body
$message .= "Hello,\nThis is a text email, the text/plain version.
\n\nRegards,\nYour Name";
$message .= "\r\n\r\n--" . $boundary . "\r\n";
$message .= "Content-type: text/html;charset=utf-8\r\n\r\n";

//Html body
$message .= "
 Hello,
This is a text email, the html version.

Regards,
Your Name";
$message .= "\r\n\r\n--" . $boundary . "--";

//invoke the PHP mail function
mail('', $subject, $message, $headers);

答案 2 :(得分:0)

这听起来像您发送的包含图片代码的电子邮件会发送到您的垃圾邮箱。

您使用的是像gmail这样的邮件提供商吗?他们主要将不受信任的邮件直接发送到垃圾邮件文件夹。不受信任,我的意思是新注册的帐户。

使用PHP的本机mail()功能发送的邮件不会使新邮件被检测为垃圾邮件。这就是php准备邮件头的方式。

因此,使用像 SwiftMailer 这样的php邮件库是可行的方法。它为您提供了良好的自定义选项,并包含使附件发送邮件更容易的功能。

检查出来: http://swiftmailer.org/docs/messages.html#attaching-files


以下是如何使用SwiftMailer发送带有图像附件的电子邮件的示例:

<?php
require_once 'lib/swift_required.php';

// Create the Transport
$transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25)
  ->setUsername('your username')
  ->setPassword('your password');

// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

// Create the message
$message = Swift_Message::newInstance()

// Give the message a subject
->setSubject('Your subject')

// Set the From address with an associative array
->setFrom(array('john@doe.com' => 'John Doe'))

// Set the To addresses with an associative array
->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))

// Give it a body
->setBody('Here is the message itself')

// And optionally an alternative body
->addPart('<q>Here is the message itself</q>', 'text/html');

// Add the attachment
$message->attach(Swift_Attachment::fromPath('/path/to/image.jpg'));

// Send the message
$result = $mailer->send($message);


试一试。