Я на самом деле новичок в использовании sendmail, но я много читал об этом и только перенаправляю меня на использование PHPmailer, swiftmailer и т. Д. Но это так сложно понять без знания основ. Поэтому я решил попробовать просто, и это то, что у меня есть.
Я настроил свой php.ini:
[mail function] smtp_port = 465 sendmail_path="C:\wamp\sendmail\sendmail.exe -t" mail.add_x_header = On
И мой sendmail.ini:
[sendmail] smtp_server=smtp.gmail.com smtp_port=587 smtp_ssl= error_logfile=error.log debug_logfile=debug.log auth_username=mygmail@gmail.com auth_password=mypassword hostname=localhost
и у меня есть этот код PHP:
$to = 'mygmail@gmail.com'; $message = $_POST['message']; $email = $_POST['email']; $contact_num = $_POST['contact_number']; $headers = 'From:'.'$email' . "\r\n" .'$contact' . "\r\n" . 'Reply-To: mygmail@gmail.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $message, $headers);
но когда я нажимаю кнопку отправки, появляется sendmail.exe, и ничего не происходит. И когда я проверяю error.log, он говорит:
14/07/01 23:23:48 : Connection Closed Gracefully.
Эта часть является копией и вставкой сообщения: Sendmail Wamp Php
Проблема в том, что sendmail должен запускаться как администратор. Это решение, помогающее любому в моей ситуации.
Выполнить как администратор
если вы используете gmail, вам нужно создать новый пароль «Ваши пароли, специфичные для вашего приложения»
Если это еще не работает (Мой ответ)
Убедитесь, что сервер (или IDE) запускается как admin, либо:
1) Щелчок правой кнопкой мыши по программе (например, сервер, ide, командная строка) и нажатие «Запуск от имени администратора»
2) ИЛИ Программа правого клика> свойства> совместимость> Отметьте выполнение как admin
Например, если вы используете PHP на встроенном сервере, запустите командную строку как администратор и запустите сервер как обычно, используя
C:\wamp\bin\php\php5.5.12\php.exe -S localhost:80 -t C:\Users\path\to\rootFolder
Конечно, измените пути файлов в соответствии с вашими потребностями.
EDIT: Это, вероятно, ошибка, с которой вы столкнулись в https://bugs.php.net/bug.php?id=44994
решение настраивает sendmail.ini и php.ini
вам нужно общаться с вашим isp, чтобы узнать, что есть открытый SMTP-сервер, у большинства из них есть один, и это похоже на smtp.yourisp.com большую часть времени.
вы также можете настроить smtp с помощью собственного почтового сервера или существующего адреса электронной почты, для этого потребуются дополнительные настройки, такие как конкретный SMTP-сервер, номер порта, заставляющий sendmail быть фактической почтой, именем пользователя, паролем и большей частью времени ssl
php.ini
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury SMTP = smtp.yourisp.mu smtp_port = 25 ; For Win32 only. ; http://php.net/sendmail-from sendmail_from = postmaster@yourisp.com ; XAMPP IMPORTANT NOTE (1): If XAMPP is installed in a base directory with spaces (eg c:\program filesC:\xampp) fakemail and mailtodisk do not work correctly. ; XAMPP IMPORTANT NOTE (2): In this case please copy the sendmail or mailtodisk folder in your root folder (eg C:\sendmail) and use this for sendmail_path. ; XAMPP: Comment out this if you want to work with fakemail for forwarding to your mailbox (sendmail.exe in the sendmail folder) sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" ; XAMPP: Comment out this if you want to work with mailToDisk, It writes all mails in the C:\xampp\mailoutput folder ;sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
Убедившись, что php и sendmail запускаются как администратор, кажется хорошей идеей, но это не решило мою проблему.
Решение в sendmail.ini
smtp_server = smtp.yourisp.com ; smtp port (normally 25) smtp_port=25 ; SMTPS (SSL) support ; auto = use SSL for port 465, otherwise try to use TLS ; ssl = alway use SSL ; tls = always use TLS ; none = never try to use SSL smtp_ssl=none
не используйте smtp_ssl = auto , из-за чего моя ошибка просто установила его в ssl tls или нет в соответствии с спецификацией вашего сервера
Убедитесь, что XAMPP запущен как администратор. Сделайте это, щелкнув правой кнопкой мыши и нажав «Запуск от имени администратора». Это исправило это для меня.