Sendmail.exe открывается при отправке почты

Я действительно новичок в использовании 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
[email protected]
auth_password=mypassword
hostname=localhost

и у меня есть этот код PHP:

$to      = '[email protected]';
$message = $_POST['message'];
$email = $_POST['email'];
$contact_num = $_POST['contact_number'];
$headers = 'From:'.'$email' . "\r\n" .'$contact' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $message, $headers);

но когда я нажимаю кнопку отправки, появляется sendmail.exe, и ничего не происходит. И когда я проверяю error.log, он говорит:

14/07/01 23:23:48 : Connection Closed Gracefully.

Ответ 1

Эта часть является копией и вставкой сообщения: Sendmail Wamp Php

Проблема заключается в том, что sendmail должен запускаться как администратор. Это решение, помогающее любому в моей ситуации.

  • Щелкните правой кнопкой мыши по адресу sendmail.exe
  • Свойства
  • Совместимость
  • Измените конфигурацию для всех пользователей
  • Выполнение как Windows XP SP 3
  • Выполнить как администратор

    если вы используете gmail, вам нужно создать новый пароль "Your паролей приложений "

Если это еще не работает (Мой ответ)

Убедитесь, что сервер (или IDE) запускается как admin, либо:

1) Щелкните правой кнопкой мыши программу (например, сервер, ide, приглашение командной строки) и нажмите "Запуск от имени администратора"

2) ИЛИ Программа правого кликa > свойствa > совместимость > Отметьте выполнение как 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

Ответ 2

Решение

настраивает 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 = [email protected]

; XAMPP IMPORTANT NOTE (1): If XAMPP is installed in a base directory with spaces (e.g. 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 (e.g. 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 или none в соответствии со спецификацией вашего сервера

Ответ 3

Убедитесь, что XAMPP запущен как администратор. Сделайте это, щелкнув правой кнопкой мыши и нажав "Запуск от имени администратора". Это исправило это для меня.