梨邮件剥离部分链接

时间:2015-09-20 12:35:14

标签: php html email html-email pear

我有点奇怪。使用PHP Pear Mail我发送的HTML电子邮件中包含指向子域http://mysub.mydomain.co.uk

的链接
$body='<html><body><strong>Hello '.$forename.'</strong><br><br>Thank you for registering your details. To complete the process, please follow the link below in this email.<br><br>
    <a href="http://mysub.mydomain.co.uk?V='.$myvalue.'">Complete Verification Here</a></body></html>';
$headers = array ('From' => $from,'To' => $to,'Subject' => $subject);
$mime = new Mail_mime();
$mime->setHTMLBody($body); 
$headers = $mime->headers($headers); 
$smtp = Mail::factory('smtp', 
        array ('host' => $host,
            'auth' => true,
            'username' => $username,
            'password' => $password)
        );
$mail = $smtp->send($to, $headers, $body); 

电子邮件被发送正常,如果我从发送电子邮件的页面将电子邮件正文打印到屏幕上,链接工作正常。但是,当它到达MS Outlook中的电子邮件时,它会从链接中的myvalue中取出前2个字符。如果myvalue=12345678显示myvalue=345678并且错误地显示链接,例如它会将上面显示为ttp://mysub.mydomain.co.uk/?V=345678。请注意,它会删除http地址中的 H ,并在?v=之前添加正斜杠,前两个数字12也会丢失。然后它无法打开链接,因为它错误地显示为http链接。该电子邮件也不会在Gmail上以HTML电子邮件形式发送,也没有链接。

知道我在这里缺少什么吗?

2 个答案:

答案 0 :(得分:0)

最终找到了问题

在正文中我不得不替换

中的每一个事件
"

使用ASCII码

&#039

现在工作正常

答案 1 :(得分:0)

您不必操作mail_mime包之外的正文文本,您需要使用它对主体进行mime编码:

$mime = new Mail_mime();
$mime->setHTMLBody($body);
$mimebody = $mime->get();
$headers = $mime->headers($headers);
$smtp = Mail::factory(
    'smtp',
    [
        'host' => $host,
        'auth' =>     true,
        'username' => $username,
        'password' => $password,
        'port' => $port
    ]
);

// send email
$mail = $smtp->send($to, $headers, $mimebody);