【问题标题】:mail is not sending using codeigniter php邮件未使用 codeigniter php 发送
【发布时间】:2016-01-16 03:57:14
【问题描述】:

我想在用户注册时向他们发送电子邮件。 我已经使用电子邮件 api 向用户发送邮件。

我的控制器代码:

$this->load->model('user_model');
$verify = $this->user_model->insertUser();
$this->verifyMail($username,$verify);
$user_data = array(
    'email' => $email,
    'username' => $username,
    'logged_in' => TRUE 
);
$this->SendMail();
$this->session->set_userdata($user_data);
redirect('user/about_me');

我的邮件代码:

function SendMail()
{
    //***************Email API ***********************************************************
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $headers .= "From: HP <crm@example.com>\r\n";
    $headers .= "CC: hp@example.com\r\n";   

    $mailbox= "<pre style=\"font-family:Verdana, Geneva, sans-serif;\">
                test
                </pre>";

    $Subject = "Ttest \r\n" ;

    $email_to = "hp@example.com" ;

    if($email_to != '') {
        mail($email_to, $Subject, $mailbox, $headers);
    }       
}

【问题讨论】:

    标签: php codeigniter email view model


    【解决方案1】:

    看起来您需要在发送电子邮件之前设置用户数据并将用户数据包含在 SendMail 中。

    以下是更改:

    $this->session->set_userdata($user_data);
    $this->SendMail();
    
    $email_to = $this->session->userdata("email");
    

    这里是完整的例子:

    $this->load->model('user_model');
    $verify = $this->user_model->insertUser();
    $this->verifyMail($username,$verify);
    $user_data = array(
        'email' => $email,
        'username' => $username,
        'logged_in' => TRUE 
    );
    $this->session->set_userdata($user_data);
    $this->SendMail();
    redirect('user/about_me');
    
    
    function SendMail()
    {
        //***************Email API ***********************************************************
        $headers = "MIME-Version: 1.0\r\n";
        $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
        $headers .= "From: HP <crm@example.com>\r\n";
        $headers .= "CC: hp@example.com\r\n";   
    
        $mailbox= "<pre style=\"font-family:Verdana, Geneva, sans-serif;\">
                    test
                    </pre>";
    
        $Subject = "Ttest \r\n" ;
    
        $email_to = $this->session->userdata("email");
    
        if($email_to != '') {
            mail($email_to, $Subject, $mailbox, $headers);
        }       
    }
    

    【讨论】:

    • 我已经修复了电子邮件 ID,那么这个代码的用途是什么 $email_to = $this->session->userdata("email"); .这与“hp@example.com”相同。而且从您的代码中它不起作用
    • 由于您将电子邮件地址放入会话中,我认为应该在 SendMail() 函数中调用它以用于发送电子邮件。我看到了“hp@example.com”,并认为这是一个不存在的硬编码地址。
    • 您是否尝试过验证 mail() 是否正常工作。在新的控制器功能中硬编码邮件功能。向您的个人邮箱发送电子邮件。
    • mail('myemail@example.com','some text','some more text');
    猜你喜欢
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 2013-07-09
    • 2015-01-05
    相关资源
    最近更新 更多