У меня есть php-почта без проверки SMTP и почтовый сервер не позволяет мне отправлять электронную почту без использования SMTP. Я перепробовал много вариантов, но не могу это исправить; Я новичок в мире php. Пожалуйста, помогите мне исправить это.
Это мой почтовый код php:
<?php
/**
* Sends an e-mail based on a template
*
* @param $template_name
* @param $template_data
* @param $recipient_mail
* @param $subject
* @param bool $is_admin
* @throws Exception
* @throws SmartyException
*/
function send_email_template($template_name, $template_data, $recipient_mail, $subject, $is_admin = false){
global $template;
$template->assign('mail', $template_data);
if($is_admin) {
$body = $template->fetch(ADMIN_TEMPLATE . 'email/' . $template_name);
}else{
$body = $template->fetch(CURRENT_TEMPLATE . 'email/' . $template_name);
}
$headers = sprintf('From: %s', get_setting('email_from')) . '\r\n';
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
mail($recipient_mail, $subject, $body, $headers);
}
/**
* Checks if email exists based on given $email
*
* @param $email
* @return bool
*/
function email_exists($email){
$sql = 'select * from members where members_email = ' . make_safe($email);
return fetch_row($sql);
}
/**
* Updates the email code for a member based on their email
*
* @param $email
* @param $email_code
* @return bool
*/
function update_email_code($email, $email_code){
global $database;
try {
$rs = $database->Execute('select * from members where members_email = ' . make_safe($email));
$member = array();
$member['members_email_code'] = $email_code;
$updateSQL = $database->GetUpdateSQL($rs, $member);
$database->Execute($updateSQL);
return true;
} catch (exception $e) {
error_log($e);
return false;
}
}
Используйте этот скрипт для отправки электронной почты с использованием SMTP.
В этом случае мы используем Google SMTP-сервер, воспользуйтесь этой ссылкой, чтобы узнать о Google SMTP https://support.google.com/a/answer/176600?hl=en.
<?php
ini_set("SMTP", "aspmx.l.google.com");
ini_set("sendmail_from", "[email protected]");
$message = "The mail message was sent with the following mail setting:\r\nSMTP = aspmx.l.google.com\r\nsmtp_port = 25\r\nsendmail_from = [email protected]";
$headers = "From: [email protected]";mail("[email protected]", "Testing", $message, $headers);
echo "Check your email now....<BR/>";
?>
Ниже код работает для меня
require_once('../class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
$mail = new PHPMailer();
$body = file_get_contents('contents.html');
$body = eregi_replace("[\]",'',$body);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "mail.yourdomain.com"; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$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->SetFrom('[email protected]', 'First Last');
$mail->AddReplyTo("[email protected]","First Last");
$mail->Subject = "PHPMailer Test Subject via smtp, basic with authentication";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$address = "[email protected]";
$mail->AddAddress($address, "John Doe");
$mail->AddAttachment("images/phpmailer.gif"); // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
И если вы используете Gmail в качестве SMTP
Зайдите в настройки своего аккаунта ->https://myaccount.google.com/security?utm_source=OGB&PLI = 1 # connectedapps
нажмите «Разрешить менее защищенное приложение», чтобы включить.