Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPmail附件未送达Gmail+;格式错误_Php_Email_Pdf_Gmail_Gmail Api - Fatal编程技术网

PHPmail附件未送达Gmail+;格式错误

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编码 它是否可以标准

我使用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发送带有附件的电子邮件吗@是的,我也这么认为。不幸的是,在这种特殊情况下,不可能实现。