Codeigniter联系表单电子邮件 [英] Codeigniter contact form email
问题描述
我试图在Codeigniter中设置一个联系表单(我使用Apache运行在xampp,我有一个虚拟主机设置)。我有实际的形式工作,但是当我尝试链接它,以便它发送电子邮件的结果,我得到一个错误。
我已经环顾四周,尝试了几个不同的解决方案,但我不知道是什么,我做错了。
I'm trying to set up a contact form in Codeigniter (I'm running on xampp using Apache and I have a virtual host set up). I have the actual form working but when I try to link it up so that it emails the results I get an error. I've looked around and tried a few different solutions but I can't figure out what it is that I'm doing wrong.
控制器: / p>
Controller:
public function contact()
{
$this->load->helper('form');
$this->load->library('form_validation');
$this->form_validation->set_rules('name', 'your name', 'required', array('required'=>"<p class='required'>Please provide %s</p><br>"));
$this->form_validation->set_rules('email', 'your email address', 'required', array('required'=>"<p class='required'>Please provide %s</p><br>"));
if($this->form_validation->run() == FALSE)
{
$this->load->view('templates/headder');
$this->load->view('contact');
$this->load->view('templates/footer');
}
else
{
$config = array(
'protocol' => 'smtp',
'smtp_host' => 'smtp.mydomain.co.uk',
'smtp_port' => 465,
'smtp_user' => 'example@mydomain.co.uk',
'smtp_pass' => 'mypassword',
'charset' => 'iso-8859-1',
'wordwrap' => TRUE,
);
$message = 'This is a test message... do I work?';
$this->load->library('email');
$this->email->initialize($config);
$this->email->from('ecample@example.co.uk', 'Tester');
$this->email->to('example@mydomain.co.uk');
$this->email->subject('New Query');
$this->email->message($message);
$this->email->send();
if($this->email->send()){
$this->load->view('templates/headder');
$this->load->view('sent');
$this->load->view('templates/footer');
}
else
{
$this->load->view('templates/headder');
$this->load->view('contact');
$this->load->view('templates/footer');
}
}
}
查看:
<?php echo form_open('home/contact'); ?>
<h3><span class='required'>*</span>Name:</h3>
<label><input type='text' name='name' value="<?php echo set_value('name'); ?>" maxlength="50" ></label>
<?php echo form_error('name'); ?>
<h3>Company:</h3>
<label><input type='text' name='company' value="<?php echo set_value('company'); ?>" maxlength="100"></label>
<h3><span class='required'>*</span>eMail:</h3>
<label><input type='email' name='email' value="<?php echo set_value('email'); ?>" maxlength="100"></label>
<?php echo form_error('email'); ?>
<input id='submit_button' type='submit' value='Submit'>
错误讯息:
A PHP Error was encountered
Severity: Notice
Message: fwrite(): send of 11 bytes failed with errno=10054 An existing connection was forcibly closed by the remote host.
Filename: libraries/Email.php
Line Number: 2131
Backtrace:
File: C:\xampp\htdocs\root\CI\application\controllers\home.php
Line: 80
Function: send
File: C:\xampp\htdocs\root\public_html\index.php
Line: 292
Function: require_once
任何建议都将非常感激。
Any advice would be much appreciated.
编辑
但是现在我得到以下消息:
I have changed the port as suggested on another post however now I am getting the following message:
A PHP Error was encountered
Severity: Warning
Message: fsockopen(): unable to connect to mail.myemail.co.uk:25 (A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. )
Filename: libraries/Email.php
Line Number: 1949
Backtrace:
File: C:\xampp\htdocs\root\CI\application\controllers\home.php
Line: 68
Function: send
File: C:\xampp\htdocs\root\public_html\index.php
Line: 292
Function: require_once
我尝试更改我的电子邮件地址,只是为了确保我没有输入我的电子邮件地址,消息表明连接已被我的主机强制关闭,所以我不相信这是简单的任何东西。
I tried changing my email address so that it was incorrect just to make sure I hadn't entered my email details wrong and got a different message to say that the connection had been forcibly closed by my host so I don't believe it's anything that simple either.
编辑
我设置了不同的电子邮件地址,我现在不再收到错误,但现在我总是得到消息发送失败屏幕,我不明白为什么。
EDIT I have set a different email address up and I'm now no longer getting an error however now I'm always getting the "message failed to send" screen and I can't understand why.
EDIT
我现在已经按照注释中的建议使用了print_debugger。结果如下。
I have now used print_debugger as suggested in the comments. The result was as followed.
220 BLU436-SMTP37.smtp.hotmail.com Microsoft ESMTP MAIL Service, Version: 8.0.9200.16384 ready at Mon, 20 Apr 2015 11:25:59 -0700
hello: 250-BLU436-SMTP37.smtp.hotmail.com Hello [90.209.233.150]
250-TURN
250-SIZE 41943040
250-ETRN
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-8bitmime
250-BINARYMIME
250-CHUNKING
250-VRFY
250-TLS
250-STARTTLS
250 OK
Failed to send AUTH LOGIN command. Error: 530 5.7.0 Must issue a STARTTLS command first
Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method.
User-Agent: CodeIgniter
Date: Mon, 20 Apr 2015 20:25:58 +0200
From: "Tester" <myemail@mydomain.co.uk>
Return-Path: <myemail@mydomain.co.uk>
To: myemail@mydomain.co.uk
Subject: =?SIO-8859-1?Q?=4E=65=77=20=51=75=65=72=79?=
Reply-To: "myemail@mydomain.co.uk" <myemail@mydomain.co.uk>
X-Sender: myemail@mydomain.co.uk
X-Mailer: CodeIgniter
X-Priority: 3 (Normal)
Message-ID: <553544b61c447@mydomain.co.uk>
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="B_ALT_553544b61c451"
This is a multi-part message in MIME format.
Your email application may not support this format.
--B_ALT_553544b61c451
Content-Type: text/plain; charset=SIO-8859-1
Content-Transfer-Encoding: 8bit
this is a test
--B_ALT_553544b61c451
Content-Type: text/html; charset=SIO-8859-1
Content-Transfer-Encoding: quoted-printable
this is a test
--B_ALT_553544b61c451--
我正在读这个MIME问题,是否正确?
I'm reading this as a MIME problem, is this correct?
推荐答案
我想也许电子邮件smpt需要ssl://,如果你使用xampp或wamp测试电子邮件,你需要配置邮件设置。
I think perhaps email smpt needs ssl:// and if you are using xampp or wamp for testing email you need to configure the mail settings.
'smtp_host' => 'smtp.mydomain.co.uk',
且应为
'smtp_host' => 'ssl://smtp.mydomain.co.uk';
如何在xampp上设置电子邮件
How to setup email on xampp
https://www.youtube.com/watch?v=TO7MfDcM-Ho
public function contact() {
$this->load->helper('form');
$this->load->library('form_validation');
$this->load->library('email');
$this->load->library('url');
$this->form_validation->set_rules('name', 'Your Name', 'required');
$this->form_validation->set_rules('email', 'your email address', 'required');
// Removed Array From Form Validation
if($this->form_validation->run() == FALSE) {
$this->load->view('templates/headder');
$this->load->view('contact');
$this->load->view('templates/footer');
} else {
$config = array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.mydomain.co.uk',
'smtp_port' => 465,
'smtp_user' => 'example@mydomain.co.uk',
'smtp_pass' => 'mypassword',
'charset' => 'iso-8859-1',
'wordwrap' => TRUE,
);
$this->email->initialize($config);
$this->email->from('ecample@example.co.uk', 'Tester');
$this->email->to('example@mydomain.co.uk');
$this->email->subject('New Query');
$message = 'This is a test message... do I work?';
$this->email->message($message);
if($this->email->send()){
$this->load->view('templates/header'); // Fix spelling Mistake hedder
$this->load->view('sent');
$this->load->view('templates/footer');
} else {
$this->load->view('templates/header'); // Fix spelling Mistake hedder
$this->load->view('contact');
$this->load->view('templates/footer');
}
}
}
这篇关于Codeigniter联系表单电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!