我正在尝试使用本地主机远程连接到另一台服务器并执行邮件功能,因此我使用get方法发送电子邮件和主题 这是我的本地主机文件:
<?php
for ($email=0; $email< $n_emails; $email++){
$urlsmtp = $link.'?email='.$destino.'&subject='.$tornado.'&msg='.$msgrand.'&name='.$_POST['naming'].'&from='.$_POST['localting'];
//this link is something like http://test.com/RemoteSmpt.php?email=test@mail.com &subject=test&msg=test&name=test&from=test
$urlsmtp = str_replace(" ", "%20", $urlsmtp);
$response = file_get_contents($urlsmtp);
}
?>
和我将其放在服务器中的文件RemoteSmpt.php包含以下代码:
<?php
if ( isset( $_GET['email']) && $_GET['subject'] && $_GET['msg'] && $_GET['name'] && $_GET['from']) {
$email = $_GET['email'];
$subject = $_GET['subject'];
$msg = $_GET['msg'];
$name = $_GET['name'];
$from = $_GET['from'];
$headers = 'From: '.$name.'<'.$from.'>\n';
$enviar = mail($email, $subject, $msg, $headers);
if ($enviar){
echo ('<font color="green"> -'. $email .' 0k -- With Subject : '.$subject.'</font><br>');
} else {
echo ('<font color="red"> -'. $email .' Not Sended -- With Subject : '.$subject.'</font><br>');
}
}else
{echo 'Invalid Data !<br>';}
?>
因此,在我上载RemoteSmpt.php文件并尝试执行此操作后,我得到了: 警告:file_get_contents(http://...@mail.com&subject=tset&msg=test&name=test&from=test):打开流失败:HTTP请求失败!在Mylocalhost文件中找不到HTTP / 1.1 404! 请知道如何解决此代码!
答案 0 :(得分:0)
您需要在URL参数中正确编码特殊字符,可以使用urlencode()
完成。
您可以使用http_build_query()
函数从关联数组构建查询字符串,并对所有内容进行正确编码。
$params = http_build_query([
'email' => $destino,
'subject' => $tornado,
'msg' => $msgrand,
'name' => $_POST['naming'],
'from' => $_POST['localting']
]);
$urlsmtp = $link . '?' . $params;