我有网站,我不是专业但已经完成除了sendmail问题。 当我点击"立即发送"按钮消息显示在屏幕上"感谢您的留言"但我没有收到任何电子邮件。
我检查了垃圾邮箱,它也不存在
我检查了phpinfo SMTP端口打开和25
我检查了phpinfo senmail_path / usr / sbin / sendmail -t -i
我打电话给托管公司并发送电子邮件,他们说每个服务器都可以检查你的sendmail脚本。
这里是sendmail.php文件;
<?php
$name = @trim(stripslashes($_POST['name']));
$from = @trim(stripslashes($_POST['email']));
$subject = @trim(stripslashes($_POST['subject']));
$message = @trim(stripslashes($_POST['message']));
$to = 'tradertarik@gmail.com';
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: {$name} <{$from}>";
$headers[] = "Reply-To: <{$from}>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();
mail($to, $subject, $message, $headers);
die;
我需要帮助才能找出问题所在。我检查了其他问题,并以某种方式对我没有任何帮助。 提前谢谢。
P.S。我不确定是否有人需要使用HTML代码,但我认为添加它也会很好。
<div class="contact-form wow fadeIn" data-wow-duration="1000ms" data-wow-delay="600ms">
<div class="row">
<div class="col-sm-6">
<form id="main-contact-form" name="contact-form" method="post" action="sendemail.php">
<div class="row wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms">
<div class="col-sm-6">
<div class="form-group">
<input type="text" name="name" class="form-control" placeholder="Name" required>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<input type="email" name="email" class="form-control" placeholder="Email Address" required>
</div>
</div>
</div>
<div class="form-group">
<input type="text" name="subject" class="form-control" placeholder="Subject" required>
</div>
<div class="form-group">
<textarea name="message" id="message" class="form-control" rows="4" placeholder="Enter your message" required></textarea>
</div>
<div class="form-group">
<button type="submit" class="btn-submit">Send Now</button>
</div>
</form>
</div>
答案 0 :(得分:1)
您的$headers
参数不正确;它应该是string
而不是array
。来自PHP manual:
要插入电子邮件标题末尾的字符串。
这通常用于添加额外的标题(From,Cc和Bcc)。应使用CRLF(\ r \ n)分隔多个额外标头。如果使用外部数据来组成此标头,则应对数据进行清理,以便不会注入不需要的标头。
您应该能够像这样解决问题:
mail($to, $subject, $message, implode("\r\n", $headers));
答案 1 :(得分:0)
来自php的邮件功能很难使用。而不是,我确实使用了https://github.com/PHPMailer/PHPMailer(不要惊慌失措,你只需要来自class.phpmailer.php和class.smtp.php的2个文件)。
基于PHPMailer的send_mail函数示例
function send_mail($subject, $body, $altbody, $to, $name, $attach = '')
{
$mail = new PHPMailer(true);
$mail->IsHTML(true);
$mail->IsSMTP();
$mail->CharSet = 'text/html; charset=UTF-8;';
$mail->Host = "some.external.smtp.server"; // SMTP server example
$mail->SMTPDebug = 0; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Port = port_for_external_smtp; // set the SMTP port for the GMAIL server
$mail->Username = "username_for_external_smtp_server"; // SMTP account username example
$mail->Password = "pass"; // SMTP account password example
try
{
$mail->setFrom('address', 'name');
$mail->addReplyTo($to, $name);
$mail->addAddress($to, $name);
$mail->Subject = $subject;
$mail->Body = $body;
$mail->isHTML(true);
$mail->AltBody = $altbody; // altbody if for text only mail
if (!($attach == ''))
{
$mail->AddAttachment($attach); // attachment
}
$mail->send();
}
catch (phpmailerException $e)
{
echo $e->errorMessage(); //Pretty error messages from PHPMailer
}
catch (Exception $e)
{
echo $e->getMessage(); //Boring error messages from anything else!
}
}