#php #email #phpmailer #spam
#php #Адрес электронной почты #phpmailer #спам
Вопрос:
Я создал электронное письмо в формате HTML, и до сих пор все работало. Я планировал отправить его с помощью PHP (используя mail(); функция). Однако, когда я это сделал, почта не поступала на учетные записи hotmail и gmail. Я немного погуглил, и люди предложили использовать PHPMailer.
Я скачал PHPMailer и установил его на свой сервер. Пока все хорошо. Но теперь у меня есть следующий код:
<?php
set_include_path('.:c:domainsmydomainwwwrootphpmailerphpmailer.inc.php');
set_include_path('.:c:domainsmydomainwwwrootphpmailersmtp.inc.php');
require("phpmailer.inc.php");
$mail = new PHPMailer();
$mail->IsHTML(true);
$mail->From = "from@example.com";
$mail->AddAddress("mymail@mydomain.com");
$mail->Subject = "An HTML Message";
$mail->Body = "Hello, <b>my friend</b>! nn This message uses HTML entities!";
if($mail->Send()) {
echo 'Message is sent';
} else {
echo 'Message was not sent..';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
?>
У меня несколько проблем:
- Вывод сообщает мне, что электронное письмо не отправлено, но это так.
- Я получаю две темы
- Если я добавлю больше html (например, таблицу), он все равно будет отклонен hotmail (и, вероятно, gmail тоже).
Кроме того, я увидел, что есть функция SMTP. Как использовать эту функцию? Нужно ли мне записывать свой собственный SMTP?
Был бы очень рад, если бы кто-нибудь мог мне помочь!
Редактировать:
class SMTP {
var $SMTP_PORT = 25; # the default SMTP PORT
var $CRLF = "rn"; # CRLF pair
var $smtp_conn; # the socket to the server
var $error; # error if any on the last call
var $helo_rply; # the reply the server sent to us for HELO
var $do_debug; # the level of debug to perform
/*
* SMTP()
*
* Initialize the class so that the data is in a known state.
*/
function SMTP() {
$this->smtp_conn = 0;
$this->error = null;
$this->helo_rply = null;
$this->do_debug = 0;
}
Комментарии:
1. Вы имеете в
remote server
виду сервер? Ваш set_inclide_path содержит путь к локальному серверу? и PHPMailer не будет работать на вашем локальном сервере2. Нет, с сервером я имел в виду свой веб-сайт. Извините
Ответ №1:
Я использую PHPMailer в разных проектах.
Я предлагаю вам отправлять письма через SMTP, конечно, PHPMailer поддерживает это:
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = "smtp.gmail.com" //(or the smtp server you use)
$mail->Port = "465" //(gmail uses secure smtp so that runs on port 465)
$mail->SMTPAuth = "true" //we need to autenticate to the server
$mail->SMTPSecure = "ssl" //we use ssl to protected the flow of info
$mail->Username = "mymail@gmail.com" //account
$mail->Password = "password" //password
//build the message
$mail->IsHTML(true);
$mail->From = "mymail@gmail.com";
$mail->AddAddress("mymail@mydomain.com"); //who receives the mail
$mail->Subject = "An HTML Message";
$mail->Body = "Hello, <b>my friend</b>! nn This message uses HTML entities!";
if($mail->Send()) {
echo 'Message is sent';
}
else {
echo 'Message was not sent..';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
Комментарии:
1. Большое вам спасибо. 1 вопрос: Если я использую SMTP, я могу использовать только существующие адреса электронной почты? С помощью mail(); вы также можете использовать несуществующие адреса электронной почты….
2. конечно. Однако, даже если вы используете SMTP при настройке адреса from, вы можете указать адрес, отличный от того, который использовался для подключения через smtp: $mail-> From = «anotheraddress@anotherdomain.com «;
3. Черт возьми, я не могу заставить его работать. Я получаю эту ошибку: Фатальная ошибка: невозможно повторно объявить класс SMTP в C:pathtomydomainsmtp.inc.php в строке 26. Смотрите мою правку в исходном сообщении для кода
4. Ах, похоже phpmailer.inc.php уже включает в себя SMTP-файл. Теперь я получил сообщение: сообщение не было отправлено.. Я использовал ваш код с информацией о моей собственной учетной записи (и я поставил; за этими первыми переменными)
5. Оке, забудьте все вышесказанное. Я исправил это. Казалось, я использовал старую версию PHPMailer. В любом случае, «пользовательское электронное письмо отправителя» не работает. Он отображает мой адрес gmail…