PHPmail附件未送达Gmail+;格式错误
我使用phpmail脚本将附件从站点发送到电子邮件。 剧本本身就很有效。我注意到,例如,在Gmail邮件的情况下,邮件会来,但没有附件。相反,除了内容之外,还有一条很长的消息,只包含哈希字符串 此外,并非所有邮箱都能正确显示内容。在某些情况下,内容还添加了以下内容,例如: --PHP-alt-41babb7e7ab4c64e3af6ea533924bebdContent-Type:text/plain;charset=“UTF-8”内容传输编码:7bit 以及纯文本的html编码 它是否可以标准化,以便不显示不必要的信息 这是我的密码:PHPmail附件未送达Gmail+;格式错误,php,email,pdf,gmail,gmail-api,Php,Email,Pdf,Gmail,Gmail Api,我使用phpmail脚本将附件从站点发送到电子邮件。 剧本本身就很有效。我注意到,例如,在Gmail邮件的情况下,邮件会来,但没有附件。相反,除了内容之外,还有一条很长的消息,只包含哈希字符串 此外,并非所有邮箱都能正确显示内容。在某些情况下,内容还添加了以下内容,例如: --PHP-alt-41babb7e7ab4c64e3af6ea533924bebdContent-Type:text/plain;charset=“UTF-8”内容传输编码:7bit 以及纯文本的html编码 它是否可以标准
<?php
$to = $_POST['email'];
$subject = 'Attachment from site domain.com';
$subject = sprintf("=?utf-8?B?%s?=", base64_encode($subject));
$random_hash = md5(uniqid(time()));
$headers = "From: MySite <site@domain.com>\r\nReply-To: site@domain.com";
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
$filename = $_POST['file_id'] . ".pdf";
$path = "/home/ftp/wp-content/uploads";
$file = $path . "/" . $filename;
// read file into $data var
$f = fopen($file, "rb");
$data = fread($f, filesize( $file ) );
fclose($f);
$attachment = chunk_split(base64_encode($data));
ob_start();
?>
--PHP-mixed-<?php echo $random_hash; ?>
Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash; ?>"
--PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Hello,
Here the mail text.
--PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: 8bit
<h2>Hello,</h2>
<p>Here's the mail text</p>
--PHP-alt-<?php echo $random_hash; ?>--
--PHP-mixed-<?php echo $random_hash; ?>
Content-Transfer-Encoding: base64
Content-Type: application/pdf; name="<?php echo $filename; ?>"
Content-Disposition: attachment
<?php echo $attachment; ?>
--PHP-mixed-<?php echo $random_hash; ?>--
<?php
$message = ob_get_clean();
if (@mail($to, $subject, $message, $headers )) {
echo "<p><b>File send!</b></p> Check your e-mail.";
} else {
echo "<p><b>Error!</b></p> File not send.";
}
?>
--PHP混合-
内容类型:多部分/备选;boundary=“PHP alt-”
--PHP alt-
内容类型:文本/纯文本;charset=“UTF-8”
内容传输编码:7bit
你好
这里是邮件文本。
--PHP alt-
内容类型:text/html;charset=“UTF-8”
内容传输编码:8比特
你好
这是邮件文本
--PHP alt---
--PHP混合-
内容传输编码:base64
内容类型:application/pdf ;;name=“”
内容配置:附件
--PHP混合---
我可以更改什么以使附件传送适用于所有邮箱?要使其适用于所有邮件客户端可能很困难。例如,它可能是你在某个地方对许多人或少数人有一个“直线回归”。因此,大多数人使用现有的PHP库发送附件。喜欢请注意,接收直接从您自己的服务器发送的电子邮件也变得越来越困难。您必须设置SPF、DKIM、DMARC等功能。现在我使用一种服务发送电子邮件。有很多,但我喜欢。这个脚本属于PHPmailer库。它仅用于根据请求将PDF附件发送到电子邮件地址。我认为在这里使用外部解决方案与需求不成比例。有人有不同的解决方案吗?你考虑过使用Gmail API发送带有附件的电子邮件吗@是的,我也这么认为。不幸的是,在这种特殊情况下,这是不可能实现的。要让它对所有邮件客户端都起作用可能很困难。例如,它可能是你在某个地方对许多人或少数人有一个“直线回归”。因此,大多数人使用现有的PHP库发送附件。喜欢请注意,接收直接从您自己的服务器发送的电子邮件也变得越来越困难。您必须设置SPF、DKIM、DMARC等功能。现在我使用一种服务发送电子邮件。有很多,但我喜欢。这个脚本属于PHPmailer库。它仅用于根据请求将PDF附件发送到电子邮件地址。我认为在这里使用外部解决方案与需求不成比例。有人有不同的解决方案吗?你考虑过使用Gmail API发送带有附件的电子邮件吗@是的,我也这么认为。不幸的是,在这种特殊情况下,不可能实现。