【问题标题】:Pear Mail stripping part of link梨邮件剥离部分链接
【发布时间】:2015-12-17 05:22:36
【问题描述】:

我有点奇怪。使用 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 中的电子邮件中到达时,它会将前 2 个字符从链接中的 myvalue 中取出。如果myvalue=12345678 它显示myvalue=345678 并错误地显示链接,例如它将上面显示为ttp://mysub.mydomain.co.uk/?V=345678。请注意,它删除了 http 地址中的 H 并且还在 ?v= 之前添加了一个正斜杠,并且前 2 位数字 12 也丢失了。然后它无法打开链接,因为它错误地将其显示为 http 链接。该电子邮件也不会以 HTML 电子邮件形式到达 Gmail,也没有链接。

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

【问题讨论】:

标签: php html email html-email pear


【解决方案1】:

终于找到问题了

在正文中,我必须替换

正文中的每一个匹配项
"

ASCII码

&#039

现在工作正常

【讨论】:

    【解决方案2】:

    您不必在 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);
    

    【讨论】:

      猜你喜欢
      • 2013-09-23
      • 1970-01-01
      • 2013-04-08
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多