Im yerini ediliyor test e-postası göndermek için:PHP: bağlantısından Normal karakterler basit script kullanarak
$sql = "SELECT name, update_url FROM `accounts` WHERE `subscription_id` = '4692'";
$res = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($res);
$name = $row["name"];
$updateUrl = $row["update_url"];
echo $updateUrl;
$subject = 'Subscription Payment Has Failed';
$message = 'Hi ' . $name . ',
Your subscription payment has failed. You can use the link below to update your payment information if needed:
' . $updateUrl .'
Cheers,
test name';
$headers = 'From: test ' . "\r\n";
$headers .= "Content-type: text/plain; charset=\"UTF-8\"; format=flowed \r\n";
$headers .= "Mime-Version: 1.0 \r\n";
$headers .= "Content-Transfer-Encoding: quoted-printable \r\n";
mail($email, $subject, $message, $headers);
Ben $ updateURL bunun doğru saklanır halde, yani karşılaşmak sorun DB, postayla gönderilir.
daha kesin olmak gerekirse: DB olarak böyle depolanır: https://test.testsite.com/sub/update?user=406530&subscription=4692&hash=01d75f25e599e3c842ea5288f47eVe böyle alındığında gönderilen postada : https://test.testsite.com/sub/[email protected]&subscriptionF92&hash d75f25e599e3c842ea5288f47e '= 40' dir
Bildirim o '@', '= 46' yerine 'F' ve '= 01' ile boş alan doldurulur.
Buna ne sebep olabilir, bu karakterlerin ne tür bir gösterimi/kodlaması bu?
hala bu söz değer
E-posta sağlayıcınıza bağlı olarak, e-postalarını, kullanıcılarını kötü amaçlı e-postalara karşı korumak için gelen kutunuza ulaşmadan önce sterilize edilmesi çok olasıdır. – MonkeyZeus
UTF-8'i gönderdiğinizden emin misiniz? Veritabanınız UTF-8 mi saklıyor? – Machavity
Bir çeşit ASCII hex-code değiştirme işlemi gerçekleştiriyorsunuz: ASCII hex 40 = '@' ACII hex 46 = 'F' ASCII hex 1 yazdırılamıyorken bir yer kaplıyorsunuz. – CD001