喜
我试图将长文本发布到另一台服务器以发送电子邮件,但是当服务器发送电子邮件时,我并未考虑我希望得到的内容:
应该如何:
<a target='_blank' href='http://sosgram.ga/account/access/verify.php?id='NDA='&code=237804940a1a14644fbd1cdddc165d28> Clique aquí para activar la cuenta :)</a>
如何:
<a target='_blank' href='http://sosgram.ga/account/access/verify.php?id='NDA='
- 之后,所有消息消失
已连接的文件:
SignUp文件:
$id = $user_index->lasdID();
$key = base64_encode($id);
$id = $key;
$code = file_get_contents("PRIVATE");
$link = "http://sosgram.ga/account/access/verify.php?id='$id'&code=$code";
$message = "
<b>Hola $fullname,
<br>
Bienvenido a SOSgram</b><br><br>
Para completar su registro, simplemente clique en el siguiente link de verificación<br><br>
<a target='_blank' href='$link'>Clique aquí para activar la cuenta :)</a>
<br><br><br>
<i>Muchas gracias,<br>
SOSgram</i>";
$subject = "Confirmar Registro en SOSgram";
$user_index->send_mail($email,$message,$subject);
$msg = "<div class='alert alert-success fade in'>
<a href='#' class='close' data-dismiss='alert' aria-label='close'>×</a>
<strong>Enhorabuena!</strong> Su registro se ha completado correctamente.<br>
En breve recibirá un email con un link de confirmación de su cuenta
</div>";
我只发布导致我的错误的代码,因为我检查了其他代码并且效果很好
函数文件:
function send_mail($email,$message,$subject)
{
$url = 'PRIVATE/email.php';
$myvars = 'email=' . $email . '&message=' . $message . '&subject=' . $subject;
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $myvars);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec( $ch );
}
服务器电子邮件文件:
if ($_POST['email'] and $_POST['subject'] and $_POST['message']) {
date_default_timezone_set('Etc/UTC');
require 'mailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$mail->isSMTP();
$mail->CharSet = 'UTF-8';
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
$mail->Host = "smtp.sparkpostmail.com";
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = "SMTP_Injection";
$mail->Password = "PRIATE";
$mail->setFrom('verify@email.sosgram.ga', 'Verificación de Cuentas | SOSgram');
$mail->addReplyTo('support@email.sosgram.ga', 'Soporte | SOSgram');
$mail->addAddress("$email");
$mail->Subject = "$subject";
$mail->msgHTML("$message");
if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
} else {echo "Bad Request";}
我认为错误在postmethod中,当服务器发送消息时,它解释链接http://sosgram.ga/account/access/verify.php?id='$id'&code=$code
,因为它分隔了post方法,因为它有一个&amp;图标,因此它修剪文本并仅将消息发送到&amp;
如何强制$ _POST方法发送图标&amp;作为一个图标而不是方法中的分隔符?
由于
答案 0 :(得分:4)
使用urlencode
功能。
当编码要在URL的查询部分中使用的字符串时,此函数很方便,这是将变量传递到下一页的便捷方式。
和
返回一个字符串,其中除-_之外的所有非字母数字字符。已被替换为百分号(%),后跟两个十六进制数字和空格,编码为加号(+)。它的编码方式与编码WWW表单中的发布数据的方式相同,这与application / x-www-form-urlencoded媒体类型的方式相同。
或者,使用http_build_query
:
生成URL编码的查询字符串
$base_url = "http://sosgram.ga/account/access/verify.php?";
$query = http_build_query(Array(
id => "'$id'", # Are you sure you want to surround the id with apostrophes?
code => $code
));
$link = $base_url . $query;