2016-10-01 8 views
5

Używam phpmailer do wysyłania wiadomości e-mail z hiperłączem na jej ciele. Mam ten kod:PHPMailer: hiperłącze pojawia się w nawiasach w widoku

$body = "<a href='".DIR."activate.php?x=$id&y=$activasion'>".DIR."activate.php?x=$id&y=$activasion</a>"; 
require('classes/PHPMailerAutoload.php'); 
     $mail = new PHPMailer; 
     $mail->CharSet = "UTF-8"; 
     $mail->SMTPDebug = 2;    // Enable verbose debug output 
     $mail->isSMTP();     // Set mailer to use SMTP 
     $mail->Host = SMTP_HOST;   // Specify main and backup SMTP servers 
     $mail->SMTPAuth = true;   // Enable SMTP authentication 
     $mail->Username = SMTP_USER;  // SMTP username 
     $mail->Password = SMTP_PASSWORD; // SMTP password 
     $mail->SMTPSecure = 'ssl';  // Enable TLS encryption, `ssl` also accepted 
     $mail->Port = 465;    // TCP port to connect to 
     $mail->setFrom(SMTP_USER); 
     $mail->addAddress($to);   // Add a recipient Name is optional 
     $mail->isHTML(true);    // Set email format to HTML 
     $mail->Subject = $subject; 
     $mail->Body = $body; 
     $mail->AltBody = $altbody; 
     if(!$mail->send()) { 
      echo $mail->ErrorInfo; 
     } 

Kiedy wysłać e-maila na adres Gmail i otwórz go w Gmailu hiperłącze wygląda dobrze (mogę kliknąć na link i przekierowanie do strony).

Ale kiedy wysłać go do programu Outlook hiperłącze wygląda następująco:

[my.domain.com/activate.php?x=52 & y = aa1fdf437c526ee219decc1ea72fc266] my.domain.com/activate. php? x = y = 52 & aa1fdf437c526ee219decc1ea72fc266

Wszelkie pomysły na to, co może być nie tak?

+2

brakuje http: // – nogad

Odpowiedz

4

Klienci poczty e-mail mają różne silniki renderowania.

Wygląda na to, że Gmail wyświetli link bez protokołu http:// lub https://.

Program Outlook może nadal go wymagać.

Spróbuj użyć (aka schemat mniej) URL protokołu mniej: //

$body = "<a href='//".DIR."activate.php?x=$id&y=$activasion'>".DIR."activate.php?x=$id&y=$activasion</a>";


EDIT:

Nota @Synchro w komentarzach:

Anonimowe/względne adresy URL protokołów to zły pomysł w e-mailu, ponieważ , chyba że jesteś klientem poczty internetowej, nie masz żadnego bazowego protokołu, który byłby w stosunku do, a więc po prostu się zepsuł. Wyraź to jasno i będzie działać wszędzie, a obecnie trudno jest znaleźć dobrą wymówkę, aby nie używać https.

+1

Anonimowych/względne adresy protokołu są złym pomysłem w wiadomości e-mail, ponieważ jeśli nie jesteś w kliencie poczty, nie masz protokołu bazowy, względem, a więc po prostu złamać. Uczyń to jasno i będzie działać wszędzie, a obecnie trudno znaleźć dobrą wymówkę, by nie używać https. – Synchro