0

我遇到以下问题:

我的网站上有一个小表格,指向一个小型 php 处理器来发送邮件。那里“工作”但不发送邮件。我在其他主机上测试了脚本,效果很好。

我打电话给托管服务提供商,看看问题出在哪里。托管公司提供了以下 PHP 脚本来测试邮件发送:

<?php
$to = "myemail@myemail.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "test@pizanoecheverri.co";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>

现在他们告诉我,我做了必要的编辑,所以它可以工作。所以我做了。我在主页上有这个小表格(你可以在 pizanoecheveri.co 中看到它):

<form name="form1" method="post" action="testm/mailing.php" class="miscclass" id="form1">
<div style="text-align: center;" id="contbaloon"><img border="0" alt="" src="/images/misc/baloon1.png"></div>
<input type="text" name="email" class="contactfield" id="textfield">
<p style="text-align: right;"><input type="submit" value="Enviar" name="button" style="background-color: #bbbdc0; border: 0 none; color: #ffffff; margin-bottom: 17px; margin-top: 10px;" class="contacto-x" id="contactbutton"></p>
</form>

我已经对这样的代码进行了编辑:

<?php
$to = "myemail@myemail.com";
$subject = "Lista de correos.";
$message = "El siguiente correo se debe agregar a la lista de correo. ".$_POST["email"];
$from = $_POST["email"];
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
echo $message;
?>

我向托管服务提供商注意到了这一点,他们说这是编程问题。这是我不知道的,因为我在其他主机中测试了相同的代码并且运行良好。

简而言之,我不明白为什么提供的代码有效,当我编辑代码在该主机上不起作用时,在其他情况下它可以正常工作并且没有语法错误,据我所知,Dreamweaver 显示了它。

我从该主机中知道的唯一细节是基于 Windows 的运行 plesk,而我测试代码的另一个主机(它在哪里工作)是基于 Linux 的 apache。两者都运行 PHP 5.2.17。

提前致谢

编辑:我测试了以下修改,但在该主机上效果不佳

<?php
$to = "myemail@myemail.com";
$subject = "Lista de correos.";
$message = "El siguiente correo se debe agregar a la lista de correo. ".$_POST["email"];
$from = $_POST["email"];
#$headers = "From:" . $from;
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: ' . $from . "\r\n";
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
echo $message;
?>
4

3 回答 3

0

请尝试这个经过测试的代码。只是复制和害虫。

仅更改标题部分

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: ' . $from . "\r\n";
于 2013-10-25T13:07:19.820 回答
0

问题是因为主机上没有安装Sendmail ,这是一个 Linux 分布式扩展,用于通过IMAP协议发送邮件。在现代,可能所有邮件提供商都禁用处理这些请求,因为不需要有效的发件人来处理请求..

解决方案是使用 SMTP 协议,该协议同时验证发件人和收件人电子邮件帐户,因此速度较慢,但​​更安全。

你不需要知道协议是如何工作的,你可以使用一个 PHP 库来做到这一点,即开源PHPMailer ..

例子

require_once('class.phpmailer.php');

$mail = new PHPMailer(true);
$mail->IsSMTP();

try {
    $mail->Host       = "mail.yourdomain.com"; // SMTP server
    $mail->SMTPAuth   = true;                  // enable SMTP authentication
    $mail->Host       = "mail.yourdomain.com"; // sets the SMTP server
    $mail->Port       = 26;                    // set the SMTP port for the GMAIL server
    $mail->Username   = "yourname@yourdomain"; // SMTP account username
    $mail->Password   = "yourpassword";        // SMTP account password

    $mail->AddReplyTo('name@yourdomain.com', 'First Last');
    $mail->AddAddress('whoto@otherdomain.com', 'John Doe');
    $mail->SetFrom('name@yourdomain.com', 'First Last');

    $mail->Subject = 'Subject';
    $mail->MsgHTML(file_get_contents('contents.html'));
    $mail->AddAttachment('images/phpmailer.gif');
    $mail->Send();

    echo "Message sent!";
} 
catch (PHPMailerException $e) {
    echo $e->errorMessage();
} 
catch (Exception $e) {
    echo $e->getMessage(); //Boring error messages from anything else!
}
于 2013-10-25T13:15:45.783 回答
0

一些托管服务提供商不允许从非其服务器托管的其他域发送电子邮件。在经销商俱乐部托管的情况下...

$from 变量中使用的电子邮件,域必须托管在同一台服务器上。

这是一个明显的错误,您不会收到任何错误消息。

于 2017-07-23T21:06:41.030 回答