2015-09-20 4 views
0

У меня немного странное. Использование PHP Груша почты Я посылаю 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. Обратите внимание, что он удаляет H в http-адресе, а также добавляет косую черту перед ?v= и первые 2 цифры 12 также отсутствуют. Затем он не может открыть ссылку, поскольку она неправильно отображает ее как ссылку http. Электронная почта также не отправляется как электронная почта HTML в Gmail, и нет ссылки.

Любая идея, что мне здесь не хватает?

+0

Это может быть та же проблема, как http://stackoverflow.com/questions/31227537/dot-s-are-missing-here-there-in -The-почта HTML-во время отправки-груша почта-мим-е – cweiske

ответ

0

В конце концов нашел проблему

В тексте я должен был заменить каждое вхождение в тело

" 

с ASCII-кодом

&#039 

Сейчас работает нормально

0

Вам не нужно манипулировать текстом тела вне пакета mail_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);