【问题标题】:Codeigniter email sending is not working [duplicate]Codeigniter 电子邮件发送不起作用[重复]
【发布时间】:2017-11-30 04:39:45
【问题描述】:

我正在尝试发送一封带有 codeigniter 联系我们表格的电子邮件,但它没有发送电子邮件。 是的,我知道之前有人问过这个问题,但我只想知道我是否没有任何错误代码。

这是我的控制器文件(Contactform.php):

<?php error_reporting(-1);
ini_set('display_errors', 'On');
set_error_handler("var_dump"); 

error_reporting(E_ALL);
ini_set('display_errors', '1');
?>


<?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');

            //zet to_email naar welk email je het contact form naar wilt laten sturen
            $to_email = 'ferran1004@gmail.com';

            //configure email settings
            $config['protocol'] = 'smtp';
            $config['smtp_host'] = 'ssl://smtp.gmail.com';
            $config['smtp_port'] = '465';
            $config['smtp_user'] = 'ferra@gmail.com';
            $config['smtp_pass'] = 'tom10';
            $config['mailtype'] = 'html';
            $config['charset'] = 'iso-8859-1';
            $config['wordwrap'] = TRUE;
            $config['newline'] = "\r\n"; //use double quotes
            $this->load->library('email', $config);
            $this->email->initialize($config);                        

            //send mail
            $this->email->from($from_email, $name);
            $this->email->to($to_email);
            $this->email->subject($subject);
            $this->email->message($message);
            if ($this->email->send())
            {
                // mail 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');
            }
        }
    }

    //custom validation function to accept only alphabets and space input
    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;
        }
    }
}
?>

这是我的视图表单文件(contact_form_view.php):

 <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'] = 'xxxxxxxx@gmail.com'; 
    $config['smtp_pass'] = 'xxxxxxxx'; 
    $config['mailtype'] = 'html';
    $config['charset'] = 'iso-8859-1';
    $config['wordwrap'] = TRUE;
    $config['newline'] = "\r\n"; //use double quotes to comply with RFC 822 standard

?>

【问题讨论】:

    标签: php codeigniter email codeigniter-3


    【解决方案1】:

    你在配置文件夹中添加email.php

    <?php
        $config['protocol'] = 'smtp';
        $config['smtp_host'] = 'ssl://smtp.gmail.com'; //change this
        $config['smtp_port'] = '465';
        $config['smtp_user'] = 'xxxxxxxx@gmail.com'; 
        $config['smtp_pass'] = 'xxxxxxxx'; 
        $config['mailtype'] = 'html';
        $config['charset'] = 'iso-8859-1';
        $config['wordwrap'] = TRUE;
        $config['newline'] = "\r\n"; //use double quotes to comply with RFC 822 standard
    
    ?>
    

    然后在 autoload.php 中自动加载配置和库

    $autoload['libraries'] = array('email');
    
    $autoload['config'] = array('email');
    

    然后你用这个发送邮件

            $to_email = 'ferran1004@gmail.com';
    
            $message = "email message";
    
            $this->email->from('noreply@gmail.com','Admin');
            $this->email->to($to_email);
            $this->email->subject($subject);
            $this->email->message($message);
            if ($this->email->send() == TRUE)
            {
                log_message('debug', 'Email Send SuccessFully>>>>>>>>>>>');
            }
            else
            {
                log_message('debug', 'Email Not Send>>>>>>>>>>>>>>>');
            }
    

    【讨论】:

    • 所以我不需要在我的控制器文件中配置电子邮件设置?
    • 是的,你不需要在控制器中
    • 也可以在你的谷歌账户设置中启用不太安全的应用
    • 为什么我需要使用这个:$this->email->from('noreply@gmail.com','Admin');而不是这个代码: $this->email->from($from_email, $name);
    • 是的,你可以用这个
    猜你喜欢
    • 2017-10-21
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 2018-09-21
    • 2014-06-17
    • 2015-04-09
    • 2013-02-06
    • 2015-11-03
    相关资源
    最近更新 更多