Я использую простой код:
$mailer = new PHPMailer();
$mailer->IsMail();
$mailer->IsHTML(true);
$mailer->CharSet = 'utf-8';
$mailer->From = '[email protected]';
$mailer->Sender = $this->title;
$mailer->FromName = SITE_TITLE;
$mailer->Subject = $this->theme;
$mailer->Body = $this->text;
$mailer->AddAddress($this->mail);
$result = $mailer->Send();
Subject, Body, FromName, Sender всегда одинаковы. И он работает с некоторыми сообщениями электронной почты, но он не работает с другими сообщениями с одинаковыми именами доменов. Например, он работает с электронной почтой: [email protected], но он не работает с [email protected]. PHPMailer всегда отправляет мне errorinfo: не удалось создать почтовую функцию.
С cmd я могу отправить электронную почту по любому адресу следующей командой:
echo "bla bla" | /usr/sbin/sendmail -f [email protected] -v [email protected] -t -i
PHP INI: sendmail_path =/usr/sbin/sendmail -t -i
PHP VER: 5.5 PHPMailer Ver: 5.2.7
Я буду благодарен за любую помощь!
-f
в команде sendmail не должно иметь пробела между ним и адресом отправителя, поэтому это должно быть [email protected]
не -f [email protected]
. Это встроено в командные строки PHPMailer при вызове sendmail, поэтому я сомневаюсь, что проблема.
Параметр, который передается ему, называется отправителем конверта и должен быть адресом электронной почты (там, где отскакивают). Он не должен быть таким же, как и от адреса, но это часто бывает. Вы устанавливаете $mailer->Sender = $this->title;
Я подозреваю, что то, что находится в $this->title
не является адресом электронной почты.
isSendmail()
вместоisMail()
? В команде sendmail после-f
не должно быть пробела.$this->title
? Это должен быть адрес электронной почты, который будет использоваться с параметром-f
потому что это отправитель конверта, а не адрес отправителя.