我一直在使用电子邮件地址通过PHPMailer发送,我正在成功获取用户信息,但是当我使用其他电子邮件地址时,它无法发送。 我也尝试更改端口号25/2525而不是587。
这是HTML5和Javascript注册表格,用于将用户详细信息发送到contact.mailer.php。
$fileNameSubmitterName=str_replace(' ', '_', $name);
$target_path = "/var/www/html/cdl/uploads/";
$target_path = $target_path .$fileNameSubmitterName.'_'.basename( $_FILES['test_upload_image']['name']);
print_r(" target path "+ $target_path);
if(move_uploaded_file($_FILES['test_upload_image']['tmp_name'], $target_path)) {
// echo "The file ". basename( $_FILES['test_upload_image']['name']). " has been uploaded";
} else {
//echo "There was an error uploading the file, please try again!";
}
$to = "aa@gmail.com";
$from=$email;
$from_name= "india";
$subject = "Feedback from india.org website";
//$body="Test Body-";
$message = " Name: " . $name . "\r\n Email: " . $email . "\r\n Phone: " . $phone . "\r\n address: " . $address . "\r\n Qualification: " . $qualification . "\r\n number:" . $number . "\r\n date:" . $date . "\r\n bank:" . $bank . "\r\n Feedback: " . $feedback;
$mail = new PHPMailer(); // create a new object
$error='';
$mail->IsSMTP(); // enable SMTP
//print_r("sta2");
$mail->SMTPDebug = 0; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'tsl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->Username = "india@gmail.com";
//$mail->Username = "vaag@gmail.com";
//print_r("sta2");
//$mail->Password = "pr";
$mail->Password = "br";
$mail->SetFrom($from, $from_name);
$mail->Subject = $subject;
$mail->Body = $message;
$mail->AddAddress($to);
$mail->addAttachment($target_path);
//print_r("stage1");
if(!$mail->Send()) {
echo '<script type="text/javascript">alert("Message not sent. Please try again!.");</script>';
print "<script>document.location.href='institute.org';</script>";
} else {
echo '<script type="text/javascript">alert("Message sent succesfully. We will conact you soon.");</script>';
print "<script>document.location.href=institute.org';</script>";
}
//print_r($error);
}
?>
我必须向未发送的其他电子邮件地址发送相同的输入字段。
答案 0 :(得分:0)
首先,您似乎正在使用旧版本的PHPMailer,并且您的代码基于一个过时的示例。我建议您再次使用the latest version和the contact form example provided with PHPMailer。
您确实有一个简单的错字:
$mail->SMTPSecure = 'tsl';
应该是
$mail->SMTPSecure = 'tls';
您的代码未显示$email
的来源,但是您将其放入消息正文中,我假设它是由用户在表单字段中提供的,然后由您输入这样做:
$from=$email;
$mail->SetFrom($from, $from_name);
这是伪造的,不适用于gmail。改为这样做:
$mail->setFrom('india@gmail.com', $from_name);
$mail->addReplyTo($_POST['email']);
$mail->addAddress($to);
这样,您将不会伪造发件人地址,但答复将转到提交者的地址。请注意,即使您设置了“发件人”名称,您的电子邮件客户端也可能会忽略它,而使用您从同一地址看到的以前的名称-这是您无法控制的。
您可以简单地使用$mail->Port = 25;
将端口号设置为25或2525,但是,由于要通过gmail发送,因此应坚持使用587,因为这是用于使用STARTTLS进行加密的SMTP提交的正确端口(您可以通过设置SMTPSecure = 'tls'
进行选择;另一种方法是在端口465上使用'ssl'
模式)。
总体而言,您根本不会进行任何错误检查,因此您的脚本将允许使用无效的电子邮件地址。 PHPMailer联系人表单示例显示了正确的处理方法。