远程mail()函数

时间:2019-07-15 22:39:56

标签: php

我正在尝试使用本地主机远程连接到另一台服务器并执行邮件功能,因此我使用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! 请知道如何解决此代码!

1 个答案:

答案 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;