Привет, ребята, недавно я только что установил 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
или другие журналы, связанные с почтой.