-1

我正在使用普通的 phpmail()函数来发送电子邮件。这在本地主机上运行良好。

但是在网上,当我尝试发送带有<img ../>标签的正文中带有图像的邮件时,电子邮件不会发送。实际上邮件函数返回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();
4

3 回答 3

0

这听起来像是您发送的包含图像标签的电子邮件被发送到您的垃圾邮件邮箱。

你在使用像 gmail 这样的邮件服务提供商吗?他们大多将不受信任的邮件直接扔到垃圾邮件文件夹中。不受信任的我的意思是新注册的帐户。

mail()使用 PHP 的本机函数发送的邮件会导致邮件被检测为垃圾邮件,这并不是什么新鲜事。这是 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);

 
试试看。

于 2013-08-21T11:39:57.193 回答
0

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

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

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

或者代码:

//指定您要发送到的电子邮件地址和电子邮件主题
$email = 'email@example.com';
$subject = '邮件主题';

//为电子邮件创建边界。这个
$boundary = uniqid('np');

//headers - 在此处指定您的发件人电子邮件地址和姓名
//并指定电子邮件的边界
$headers = "MIME 版本:1.0\r\n";
$headers .= "发件人:你的名字 \r\n";
$headers .= "收件人:".$email."\r\n";
$headers .= "内容类型:multipart/alternative;boundary=" 。$边界。"\r\n";

//这里是内容主体
$message = "这是一条 MIME 编码的消息。";
$message .= "\r\n\r\n--" 。$边界。"\r\n";
$message .= "内容类型: text/plain;charset=utf-8\r\n\r\n";

//纯文本正文
$message .= "你好,\n这是一封文本邮件,文本/纯文本版本。
\n\n问候,\n你的名字";
$message .= "\r\n\r\n--" 。$边界。"\r\n";
$message .= "内容类型: text/html;charset=utf-8\r\n\r\n";

//HTML正文
$消息 .= "
 你好,
这是一个文本电子邮件,html 版本。

问候,
你的名字”;
$message .= "\r\n\r\n--" 。$边界。“——”;

//调用PHP邮件函数
邮件('', $subject, $message, $headers);
于 2013-08-21T11:32:40.707 回答
0

如果我们能看到您的代码会很有帮助,但我会在这里冒险并要求您检查您的垃圾邮件文件夹并确保图像标签的格式正确,并且电子邮件脚本不包含任何错误。

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

于 2013-08-21T11:26:14.437 回答