#php #email #phpmailer
#php #Адрес электронной почты #phpmailer
Вопрос:
Я создал функцию электронной почты на php, мои файлы и весь хостинг — godaddy. когда я отправляю свою форму, почта не отправляется, она переходит в состояние if, внутри которого отображается сообщение об ошибке — почта не отправлена успешно!. пожалуйста, кто-нибудь, помогите мне .. мой код функции Php — blow:
<?php
include("/home/mu3c3ezzh1cs/public_html/mailer/class.phpmailer.php");
if(isset($_POST['submit'])){
$name = $_POST['name'];
$email = $_POST['email'];
$mobile = $_POST['phone'];
$location = $_POST['location'];
$decs = $_POST['desc'];
$contact_name ="Please check the Requirement";
$message = "";
$subject_thankyou = "Enquiry Acknowledgement from abc.";
$message_thankyou = "<p>Dear ".$name.",</p><p>We just received your enquiry. We will get back to you as soon as possible. Thank you for the interest shown on .</p><p>Best Regards<br /> abc<br/> Web :<a href='http://abc.in'>www.abc.in</a></p>";
$mail = new PHPMailer;
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 0; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl';
$mail->Host = "hostname";/*Specify main and backup SMTP servers*/
$mail->Port = 465;
$mail->SMTPAuth = true;/*Enable SMTP authentication*/
$mail->Username = "username";/*SMTP username*/
$mail->Password = "password";/*SMTP password*/
$mail->setFrom('info@abd.com', 'abc');
$mail->addAddress($email , $name);
$mail->isHTML(true);
$mail->Subject = $subject_thankyou;
$mail->Body = $message_thankyou;
$mail->AltBody = $subject_thankyou;
$mail->send();
$subject ='Enquiry for abc';
$email_header ='<html style="color: rgb(34, 34, 34); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); max-width: 575px; line-height: 18px; font-size: 12px; font-family: Arial, Helvetica, sans-serif;">
<head>
<meta name="viewport" content="width=device-width" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body bgcolor="#FFFFFF" text="#000000" style="color: rgb(34, 34, 34); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); max-width: 575px; line-height: 18px; font-size: 12px; font-family: Arial, Helvetica, sans-serif;">
<table style="font-family:Helvetica,Arial,sans-serif;background:#EFEDED;padding:0 0 10px 0;" cellpadding="0" cellspacing="0" bgcolor="#EFEDED" border="0" width="100%">
<tbody>
<tr>
<td align="center">
<table width="96%" cellpadding="0" cellspacing="0"border="0">
<tbody>
<tr>
<td style="border-top:5px solid #1e96d3;background:#fff;margin:0; padding:20px; border-spacing:0px;">';
$email_footer = '</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</body>
</html>';
$body = $email_header.
'<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td style="margin:0; padding:0px 0px 15px 0px; border-spacing:0px;">
<p style="font-size:14px; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-weight: bold; line-height: 1.5em; margin: 0px; padding: 0.4em; text-align: left;">
'.$subject.'
</p>
</td>
</tr>
<tr>
<td style="margin:0; padding:0px 0px 15px 0px; border-spacing:0px;">
<p style="color:#000; font-size:13px; margin:0; font-family:Arial, Helvetica,sans-serif;">
<strong>
'.$contact_name.',
</strong>
<br>
</p>
</td>
</tr>
<tr>
<td style="margin:0; padding:0 0 5px 0;">
<p style="font-size:13px; background-color: rgb(234, 234, 234); color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-weight: bold; line-height: 1.5em; margin: 0px; padding: 0.4em; text-align: left;">
Details:
</p>
</td>
</tr>
<tr>
<td style="margin:0; padding:0px 0px 15px 0px; border-spacing:0px;">
<table style="font-family:Helvetica,Arial,sans-serif; font-size:12px; font-weight:bold; margin-top:10px; width:100%">
<tbody>
<tr>
<td style="width:120px; padding:4px 0;">
Name
</td>
<td style="padding-right:10px;">
:
</td>
<td style="font-weight:normal;">
'.$name.'
</td>
</tr>
<tr>
<td style="padding:4px 0;">
Phone Number
</td>
<td>
:
</td>
<td style="font-weight:normal;">
'.$mobile.'
</td>
</tr>
<tr>
<td style="padding:4px 0;">
Email
</td>
<td>
:
</td>
<td style="font-weight:normal;">
'.$email.'
</td>
</tr>
<tr>
<td style="padding:4px 0;">
Location
</td>
<td>
:
</td>
<td style="font-weight:normal;">
'.$location.'
</td>
</tr>
<tr>
<td style="padding:4px 0;">
Description
</td>
<td>
:
</td>
<td style="font-weight:normal;">
'.$decs.'
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>'
.$email_footer;
$message .= $body;
$mail = new PHPMailer;
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 0; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true;
$mail->SMTPSecure= false;
$mail->Host = "hostname";
$mail->Port = 465;
$mail->SMTPAuth = true;/*Enable SMTP authentication*/
$mail->Username = "username";
$mail->Password = "password";
$mail->setFrom('info@abc.com', $name);
$mail->addAddress('abc@gmail.com' , 'abc');
$mail->isHTML(true);
if(!$mail->Send()) {
?>
<script type="text/javascript">
window.alert("mail not sent successfully!");
// window.location.href="thanks.php";
</script>
<?php
}
else{
?>
<script type="text/javascript">
window.location.href="thanks.php";
</script>
<?php
}
}
?>
Комментарии:
1. Может быть, вы могли бы получить причину ошибки непосредственно из PHPMailer , установив для
SMTPDebug
параметра значение 1?2. Теперь это работает, я получаю почту.. в почте это отображается как — Предупреждение! Непроверенный отправитель. Мы не смогли проверить, действительно ли электронное письмо было от abc@gmail.com . Будьте осторожны при открытии любых ссылок / вложений, если таковые имеются, в этом электронном письме
3. Похоже, что оно не прошло через серверы Gmail, а было отправлено с собственных SMTP-серверов GoDaddy непосредственно получателю.
Ответ №1:
Корень проблемы: вы находитесь на GoDaddy.
GoDaddy не позволяет вам отправлять сообщения через какие-либо почтовые серверы, кроме их собственных (обычно используется почтовый сервер по адресу relay.secureserver.net
). Переключение на это решает одну проблему, но создает другую: Вы не можете отправлять сообщения с адреса gmail, если только вы не отправляете через сервер gmail; это не разрешено их правилами SPF, и ваши сообщения не будут содержать подпись gmail DKIM. Это означает, что ваши сообщения фактически являются подделками, вот почему вы видите такие предупреждения — честно говоря, я удивлен, что они вообще приходят.
Итак, есть два решения:
- Не отправляйте с адреса gmail, если вы не используете серверы gmail; отправляйте с домена, который разрешает отправку с серверов GoDaddy (т. Е. с вашего собственного домена).
- Не используйте GoDaddy; используйте другого хостинг-провайдера, который не блокирует исходящий SMTP.
Все это описано в документации PHPMailer.
Помимо этого, вы используете очень старую версию PHPMailer, которая глючит и уязвима, поэтому я предлагаю вам обновить и основывать свой код на приведенных примерах.