Я хочу изучить yii как свою первую структуру. И я пытаюсь создать контактную форму. Но я получил эту ошибку:
Я уже настроил файл php.ini:
C:\wamp\bin\php\php5.3.0
И изменили значение по умолчанию на эти значения:
[mail function] ; For Win32 only. ; http://php.net/smtp SMTP = ssl:smtp.gmail.com ; http://php.net/smtp-port smtp_port = 23 ; For Win32 only. ; http://php.net/sendmail-from sendmail_from = myemail@gmail.com
Я видел здесь, что gmail не использует порт 25, который по умолчанию используется в php.ini. Поэтому я использовал 23. И также открыл этот порт в брандмауэре Windows 7. Через входящие правила.
Затем я также отредактировал основную конфигурацию в своем приложении yii, чтобы сопоставить используемую мной электронную почту:
// application-level parameters that can be accessed // using Yii::app()->params['paramName'] 'params'=>array( // this is used in contact page 'adminEmail'=>'myemail@gmail.com', ), );
Наконец, я перезапустил wampserver. Затем очистили все мои данные для просмотра. Почему тогда я все еще вижу, что он указывает порт 25 в ошибке. Я что-то пропустил? Пожалуйста помоги.
Heres простой скрипт python, который может позволить вам запускать почтовый сервер на localhost, вам не нужно ничего менять. Извините, если им немного опоздать.
import smtpd import smtplib import asyncore class SMTPServer(smtpd.SMTPServer): def __init__(*args, **kwargs): print "Running fake smtp server on port 25" smtpd.SMTPServer.__init__(*args, **kwargs) def process_message(*args, **kwargs): to = args[3][0] msg = args[4] gmail_user = 'yourgmailhere' gmail_pwd = 'yourgmailpassword' smtpserver = smtplib.SMTP("smtp.gmail.com",587) smtpserver.ehlo() smtpserver.starttls() smtpserver.ehlo smtpserver.login(gmail_user, gmail_pwd) smtpserver.sendmail(gmail_user, to, msg) print 'sent to '+to pass if __name__ == "__main__": smtp_server = SMTPServer(('localhost', 25), None) try: asyncore.loop() except KeyboardInterrupt: smtp_server.close() #end of code
Примечание. Я использовал args [3] [0] и args [4] для адреса и сообщения, поскольку args, отправленные моей php mail (), соответствовали массиву args [3] [0] как адрес электронной почты получателя
Если вы откроете файл php.ini
в WAMP, вы найдете следующие две строки:
smtp_server smtp_port
Добавьте сервер и номер порта для вашего хоста (вам может потребоваться связаться с ними для получения дополнительной информации)
Следующие две строки не существуют по умолчанию:
auth_username auth_password
Поэтому вам нужно будет добавить их, чтобы отправлять почту с сервера, для которого требуется аутентификация. Таким образом, пример может быть:
smtp_server = mail.example.com smtp_port = 25 auth_username = example_username@example.com auth_password = example_password
ps: вы не должны использовать свою личную почту здесь. по очевидной причине.
Если вы используете WAMP, настраиваемый php.ini присутствует в папке wamp / bin / apache / Apache_x_y / bin
где _x_y связано с версией сборки Apache, используемой вашей установкой с помощью Wamp
uncomment extension = php_openssl.dll на php.ini на сервере WAMP ("D: \ wamp \ bin \ apache \ Apache2.4.4 \ bin \ php.ini")
В файле «D: \ wamp \ www \ mantisbt-1.2.15 \ config_inc.php»
# --- Конфигурация электронной почты --- $ g_phpMailer_method = PHPMAILER_METHOD_SMTP; $ g_smtp_host = 'smtp.gmail.com'; $ g_smtp_connection_mode = 'ssl'; $ g_smtp_port = 465; $ g_smtp_username = 'yourmail@gmail.com'; $ g_smtp_password = 'yourpwd'; $ g_enable_email_notification = ON; $ g_log_level = LOG_EMAIL | LOG_EMAIL_RECIPIENT; $ g_log_destination = 'файл: /tmp/log/mantisbt.log'; $ g_administrator_email = 'administrator@example.com'; $ g_webmaster_email = 'webmaster@example.com'; $ g_from_email = 'noreply@example.com'; $ g_return_path_email = 'admin@example.com'; $ g_from_name = 'Mantis Bug Tracker'; $ g_email_receive_own = OFF; $ g_email_send_using_cronjob = ВЫКЛ;