我在codeigniter中创建了一个联系表单,以便用户可以联系我,但是当我尝试发送电子邮件时,没有任何内容发送。我不知道为什么会这样。我也知道以前曾经问过,但我只是想知道我的代码是否有问题。
这是我的控制者:
<?php
class Contactform extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->helper(array('form','url'));
$this->load->library(array('session', 'form_validation', 'email'));
}
function index()
{
//set validation rules
//$this->form_validation->set_rules('name', 'Name', 'trim|required|xss_clean|callback_alpha_space_only');
//$this->form_validation->set_rules('email', 'Email ID', 'trim|required|valid_email');
//$this->form_validation->set_rules('subject', 'Subject', 'trim|required|xss_clean');
//$this->form_validation->set_rules('message', 'Message', 'trim|required|xss_clean');
//run validation on form input
if ($this->form_validation->run() == FALSE)
{
//validation fails
$this->load->view('contact_form_view');
}
else
{
//get the form data
$name = $this->input->post('name');
$from_email = $this->input->post('email');
$subject = $this->input->post('subject');
$message = $this->input->post('message');
//naar welk email je het wilt sturen
$to_email = 'ferran1004@gmail.com';
//send mail
$this->load->library('email', $config);
$this->email->from($from_email, $name);
$this->email->to($to_email);
$this->email->subject($subject);
$this->email->message($message);
if ($this->email->send() == TRUE)
{
// email sent
$this->session->set_flashdata('msg','<div class="alert alert-success text-center">Your mail has been sent successfully!</div>');
redirect('contactform/index');
}
else
{
//error
$this->session->set_flashdata('msg','<div class="alert alert-danger text-center">There is error in sending mail! Please try again later</div>');
redirect('contactform/index');
}
}
}
//Alleen alfabet letters en spaties code
function alpha_space_only($str)
{
if (!preg_match("/^[a-zA-Z ]+$/",$str))
{
$this->form_validation->set_message('alpha_space_only', 'The %s field must contain only alphabets and space');
return FALSE;
}
else
{
return TRUE;
}
}
}
?>
这是我的观点:
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3 well">
<?php $attributes = array("class" => "form-horizontal", "name" => "Contactform");
echo form_open("Contactform/index", $attributes);?>
<fieldset>
<legend>Contact Form</legend>
<div class="form-group">
<div class="col-md-12">
<label for="name" class="control-label">Name</label>
</div>
<div class="col-md-12">
<input class="form-control" name="name" placeholder="Your Full Name" type="text" value="<?php echo set_value('name'); ?>" />
<span class="text-danger"><?php echo form_error('name'); ?></span>
</div>
</div>
<div class="form-group">
<div class="col-md-12">
<label for="email" class="control-label">Email ID</label>
</div>
<div class="col-md-12">
<input class="form-control" name="email" placeholder="Your Email ID" type="text" value="<?php echo set_value('email'); ?>" />
<span class="text-danger"><?php echo form_error('email'); ?></span>
</div>
</div>
<div class="form-group">
<div class="col-md-12">
<label for="subject" class="control-label">Subject</label>
</div>
<div class="col-md-12">
<input class="form-control" name="subject" placeholder="Your Subject" type="text" value="<?php echo set_value('subject'); ?>" />
<span class="text-danger"><?php echo form_error('subject'); ?></span>
</div>
</div>
<div class="form-group">
<div class="col-md-12">
<label for="message" class="control-label">Message</label>
</div>
<div class="col-md-12">
<textarea class="form-control" name="message" rows="4" placeholder="Your Message"><?php echo set_value('message'); ?></textarea>
<span class="text-danger"><?php echo form_error('message'); ?></span>
</div>
</div>
<div class="form-group">
<div class="col-md-12">
<input name="submit" type="submit" class="btn btn-primary" value="Send" />
</div>
</div>
</fieldset>
<?php echo form_close(); ?>
<?php echo $this->session->flashdata('msg'); ?>
</div>
</div>
</div>
这是我的配置文件夹中的email.php文件:
<?php
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.gmail.com'; //change this
$config['smtp_port'] = '465';
$config['smtp_user'] = 'xxxxx@gmail.com'; //change this
$config['smtp_pass'] = 'xxxxxxx'; //change this
$config['mailtype'] = 'html';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;
$config['newline'] = "\r\n"; //use double quotes to comply with RFC 822 standard
?>
当我点击发送时,不会发送任何电子邮件。
答案 0 :(得分:1)
您可以按如下方式配置Google SMTP服务器
$ config ['protocol'] ='smtp';
$ config ['smtp_host'] ='ssl://smtp.gmail.com';
$ config ['smtp_port'] ='465';
$ config ['smtp_timeout'] ='7';
$ config ['smtp_user'] ='youremail@gmail.com';
$ config ['smtp_pass'] ='youremailpassword';
$ config ['charset'] ='utf-8';
$ config ['newline'] =“\ r \ n”;
$ config ['mailtype'] ='html'; // html或文字
$ config ['validation'] = TRUE; // bool是否验证电子邮件
Google的SMTP服务器需要身份验证,因此以下是设置方法:
了解更多https://www.digitalocean.com/community/tutorials/how-to-use-google-s-smtp-server 或Codeigniter email sending is not working
答案 1 :(得分:0)
因为这似乎是一个紧迫的问题,因为最近关于codeigniter&amp ;;的问题有很多。发送邮件,我试着解释你可以做些什么来找出你的问题
CI没有提供太多信息,以便找出您尝试发送电子邮件的错误 - 我建议使用PHP Mailer来实现此目的。
从Github下载最新的PHPMailer Build。 您可以找到项目here
立即点击“克隆或下载”并以zip格式下载 - 如下图所示。
创建一个文件夹phpmailer,其中Codeigniters index.php所在。
此zip文件中的根文件夹名为 - PHPMailer-master。 将其解压缩到您的phpmailer目录并将该文件夹重命名为lib。
您应该看到类似
的内容首先,我不是写下文档中的内容或者可以在其他地方找到的内容
以下链接对您学习PHPMailer
非常有用
在phpmailer目录中创建一个名为mail.php的php文件。 一个例子可能是:
require_once("./lib/PHPMailerAutoload.php");
echo "<pre>";
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = '0.0.0.0';
$mail->SMTPAuth = true;
$mail->Username = "yyy";
$mail->Password = "xxx";
$mail->Port = 25;
$mail->SMTPDebug = 2;
$mail->From = 'office@example.com';
$mail->FromName = 'John Doe';
$mail->addAddress('john.doe@example.com', 'John Doe');
$mail->isHTML(true);
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
if(!$mail->send()) {
echo '<br />Message could not be sent.';
echo '<br />Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
这里最重要的是,你要将你的邮件问题与Codeigniter分开。如果您设法通过PHP Mailer发送电子邮件,则应该很容易将其与CI集成。
只要您无法发送这些邮件,就应该对其进行调试 使用PHPMailer。
如果您现在通过浏览器调用mail.php文件,您应该能够看到足够的信息以便调查您的问题。
最后一句话: 看看@your垃圾邮件文件夹;)
答案 2 :(得分:0)