我一直试图让我的网站上的联系表格起作用,我花了几周的时间试图解决这个问题,但事实并非如此。
这就是问题 - 我购买了一个网页模板,它附带了PHPMailer。我现在已经完成了将我的内容插入模板,但联系表格一直很痛苦。我已经按照PHP文件中的最佳说明进行了操作,但是当我测试联系表单时,它会给我一个“内部服务器错误”。
以下是我购买的代码:
$name = trim($_POST['name']);
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$site_owners_email = 'name@mydomain.com'; // Replace this with your own email address
$site_owners_name = 'My Name'; // Replace with your name
try {
require_once('/Beta-BRC/php/PHPMailer/class.phpmailer.php');
$mail = new PHPMailer();
$mail->CharSet = 'UTF-8';
$mail->From = $email;
$mail->FromName = $name;
$mail->Subject = "[WEB Form] ".$subject;
$mail->AddAddress($site_owners_email, $site_owners_name);
$mail->Body = $message;
$mail->Mailer = "smtp";
$mail->Host = "smtp.gmail.com"; // Replace with your SMTP server address
$mail->Port = 465;
$mail->SMTPSecure = "SSL";
$mail->SMTPAuth = true; // Turn on SMTP authentication
$mail->Username = "name@mydomain.com"; // SMTP username
$mail->Password = "mypassword"; // SMTP password
//echo "true";
if($mail->Send()) {
echo "true";
} else {
echo "Error sending: " . $mail->ErrorInfo;
}
} catch (Exception $e) {
echo $e;
}
快速注意 - 我已尝试在此部分使用GMAIL帐户,但它仍然无效。
$mail->Username = "name@mydomain.com"; // SMTP username
$mail->Password = "mypassword"; // SMTP password
答案 0 :(得分:1)
无需使用phpmailer登录Gmail。下面是我使用默认设置的phpmailer函数的示例。
public function sendEmail($toaddress,$toname,$subject,$message){
if($template = file_get_contents('/home/username/domains/mydomain.com/public_html/html/email-template.html')){
$template = str_replace("[SUBJECT]",$subject,$template);
$template = str_replace("[CONTENT]",nl2br($message),$template);
$mailer = new PHPMailer;
$mailer->XMailer = "Organization Name 4.0.0";
if($this->is_logged_in()){
$mailer->AddCustomHeader("X-Originating-User-ID",$this->acct['id']);
}
$mailer->AddCustomHeader("X-Originating-IP",$_SERVER['REMOTE_ADDR']);
$mailer->setFrom("outbound@mydomain.com","From Name");
$mailer->AddAddress($toaddress,$toname);
$mailer->Subject = $subject;
$mailer->MsgHTML($template);
$mailer->AltBody = $message;
return $mailer->Send();
}else{
return false;
}
}
列出的电子邮件地址实际上并不存在。电子邮件只是从我的服务器和phpmailer发送,只是说它来自该电子邮件地址。
尝试修改我的功能以满足您的需求,并让我知道它是如何工作的。
注意: 您需要确保打开邮件服务器才能使其正常工作
虽然您根本不必使用我的功能。尝试通过检查服务器上的一些错误日志来调试代码。通常在apache错误日志中(如果你正在运行apache)。检查错误日志是对代码进行故障排除的重要部分,通常可以帮助您变得更加主动。
我希望这有助于一点点!
答案 1 :(得分:0)
Internal Server Error
的具体原因是您提供给加载PHPMailer类的require_once
语句的错误路径。
您提供的路径为/Beta-BRC/php/PHPMailer/class.phpmailer.php
,其中正确的陈述应为
require_once('/home/trsta/public_html/Beta-BRC/php/PHPMailer/class.phpmailer.php');
或者更一般地说:
require_once($_SERVER['DOCUMENT_ROOT'].'/home/trsta/public_html/Beta-BRC/php/PHPMailer/class.phpmailer.php');
您提供了有效的URL,但PHP需要服务器文件系统中的路径,这是不一样的。
那应该让你超越这个错误。可能还有其他人。