我目前有一个项目,是基于批准和拒绝的文件,已被更改或需要上传到我的数据库.我有一个代码设置,每当一个文件被创建或需要修改时,将发送一封邮箱.这封邮箱将有文档的明细以及一个链接,将用户定向到他们需要访问的页面.目前,该链接返回404未找到错误.我的代码设置如下:

$email_subject = "A Previous Document is Pending Removal";
$heading = "<a href='http://rfp.wabtec.com/production/apps/documentControl'>$dept_string-$ctrl_string-$num: $name $dev</a>";
$body_one = "A document is pending removal and will need your approval. Below is a brief description of the document:";
$body_two = "Click on the link below to be redirected to the page. Once you have logged in, check under the tab labeled <b>Pending Action</b>. Click on the name and you will be able to approve or deny the document.";

//Email
$email_to = $email;

//define the headers we want passed. Note that they are separated with \r\n
$email_headers = "MIME-Version: 1.0\r\n" .
                    "Content-type: text/html; charset=iso-8859-1\r\n" .
                    "From: RFPC Document System<noreply@wabtec.com>\r\n" .
                    "Reply-To: RFPC Document System<noreply@wabtec.com>";
  
//Body
$email_body = "<style type='text/css'>" .
                "BODY {FONT-FAMILY: arial,helvetica,sans-serif,verdana; FONT-SIZE: 14px;}" .
                ".heading {FONT-FAMILY: arial,helvetica,sans-serif,verdana; FONT-SIZE: 16px; FONT-WEIGHT: bold;}" .
                "th {text-align: left; padding-right: 10px;padding-bottom:5px}" .
                "td {padding-bottom:5px}" .
                "</style>" .
                "<div>Hello</div><br />" .
                "<div>$body_one</div><br />" .
                "<table>" .
                "<tr><th>File:</th><td><a href='http://rfp.wabtec.com/docs/documentSystem/docs/$file'>$name</a></td></tr>" .
                "<tr><th>Type:</th><td>$type</td></tr>" .
                "<tr><th>Description:</th><td>$description</td></tr>" .
                "</table><br />" .
                "<div>$body_two</div><br />" .
                "<div class='heading'>$heading</div><br />";
  
  $email_send = @mail( $email_to, $email_subject, $email_body, $email_headers );

无论何时点击链接,这都是我的URL:

http://rfp.wabtec.com/production/apps/documen%20tControl

我知道‘%20’是表示空格的HTMLURL编码,但正如您在上面看到的.我的URL中没有空格,我想知道为什么我的代码将它放在URL中,而我在那里根本没有空格

推荐答案

如果你的HTML行太长,Gmail和其他邮箱Provider 可能会增加空格.任何超过~1024个字符(IIRC)的行都将被换行.

\n来拆线.

在这里,我只是删除了字符串粘连标记,而是插入了一个原义换行符:

$email_body = "<style type='text/css'>
BODY {FONT-FAMILY: arial,helvetica,sans-serif,verdana; FONT-SIZE: 14px;}
.heading {FONT-FAMILY: arial,helvetica,sans-serif,verdana; FONT-SIZE: 16px; FONT-WEIGHT: bold;}
th {text-align: left; padding-right: 10px;padding-bottom:5px}
td {padding-bottom:5px}
</style>
<div>Hello</div><br />
<div>$body_one</div><br />
<table>
<tr><th>File:</th><td><a href='http://rfp.wabtec.com/docs/documentSystem/docs/$file'>$name</a></td></tr>
<tr><th>Type:</th><td>$type</td></tr>
<tr><th>Description:</th><td>$description</td></tr>
</table><br />
<div>$body_two</div><br />
<div class='heading'>$heading</div><br />";

您也可以通过将邮件的Content-Transfer-Encoding标头设置为base64来对邮件正文进行base64编码,例如:

邮箱部件将如下所示:

From: Bla@example.com
Subject: Bla
Content-Type: multipart/mixed; boundary="===============9198018423169396693=="
MIME-Version: 1.0

--===============9198018423169396693==
Content-Type: multipart/alternative;
 boundary="========12345adasdasdasdasd=="
MIME-Version: 1.0

--========12345adasdasdasdasd==

Content-Type: text/html; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64

CgoKCgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3Qv
...

--========12345adasdasdasdasd==--

--===============9198018423169396693==--

Php相关问答推荐

在不超过PHP时间限制的情况下,在Laravel中高效地插入批量数据(25万条记录)?(队列、多租户)

如何使用`preg_replace`删除重复的空格字符

在WooCommerce我的帐户部分添加带有自定义链接的自定义菜单项

如何在Foreach语句中使用php和li按降序排序?

使用列入黑名单的单词和自定义业务逻辑的组合将特定的子字符串包装在HTML标记中

如何在汇总表构建器中操作LALAVEL细丝Sum::Make()值

对表示大小的值后缀进行自定义排序(XXS、XS、S、M、L、XL、XXL)

如何在自定义邮箱内容中获取WooCommerce订单项目的详细信息?

Woocommerce 临时购物车税未根据第一个请求正确计算

根据支付网关选项更改 WooCommerce Checkout 上的立即付款按钮文本

如何正确判断 PHP 是否已正确配置为使用 DOMDocument?

使用自定义规则进行 Livewire 验证不会显示错误

Laravel Eloquent(where 子句)

PHP - 计算非数值数组

根据WooCommerce中选定的变体重量更改输入数量步值

来自 GoDaddy 的邮箱在 Gmail 中显示为via

Laravel:ArgumentCountError: 函数 App\Mail 的参数太少

使用来自 PHP 表单的数据更新 xml 命名空间

PHP 中的正则表达式,具有字符范围,但不包括特定字符

PHP 中的 curl 验证失败(openssh 连接正常)