Назад | Перейти на главную страницу

Тестирование php mail () в проблеме localhost

Привет, ребята, недавно я только что установил msmtp в linux и даже отправил письмо с терминала, и это сработало:

echo -e "Subject: Test Mail\r\n\r\nThis is a test mail" |msmtp --debug --from=default -t username@gmail.com

Но в php после редактирования файла php.ini получилось следующее:

sendmail_path = '/usr/bin/msmtp -t'

и используя этот фрагмент кода:

<?php
if ( mail ( 'myemail@gmail.com', 'Test mail from localhost', 'Working Fine.' ) ){
echo 'Mail sent';
}
else{
echo 'Error. Please check error log.';
}

?>

Я получаю сообщение "Почта отправлено", но не получаю его в своем почтовом ящике. Даже в папке со спамом. Я что-то не так делаю?

Файл конфигурации msmtp:

defaults
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt

account default
host smtp.gmail.com
port 587
auth on user myemail@gmail.com
password password
from myemail@gmail.com
logfile /var/log/msmtp.log

У меня та же проблема. Ваш сценарий говорит о половинном решении .. Проверьте журналы ошибок apache, а не msmtp, если они вообще существуют .. :) В моем файле журнала сказано:

"msmtp: /etc/msmtprc: must be owned by you"

На самом деле это было правильно, мой файл конфигурации msmtp в / etc / msmtp не принадлежал http.

Мой файл php.ini выглядит так:

sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -t"

Надеюсь это поможет.

Возвращаемые значения

Возвращает TRUE, если письмо было успешно принято для доставки, в противном случае возвращает FALSE.

Важно отметить, что тот факт, что почта была принята к доставке, НЕ означает, что она действительно будет доставлена ​​по назначению.

Итак, в основном это означает, что сообщение было отправлено в инструмент передачи почты, который в вашем случае /usr/bin/msmtp. Вероятно, с вашим кодом все в порядке. Я бы сказал, что подходящее место для поиска - это /var/log/mail.err или другие журналы, связанные с почтой.