Codeigniter电子邮件始终从“my@gmail.com”发送,而不是输入的电子邮件地址。

4
今天我在我的网站上制作了一个联系表格。一切都很正常,电子邮件成功发送到指定的电子邮件地址($this->email->to('myemail@address.com'))。
在我的application/config/email.com文件中:
$config = Array(
    'protocol' => 'smtp',
    'smtp_host' => 'ssl://smtp.googlemail.com',
    'smtp_port' => 465,
    'smtp_user' => 'myemail@gmail.com',
    'smtp_pass' => 'mypassword',
    'mailtype'  => 'html', 
    'charset'   => 'iso-8859-1'
);

但是现在我从我的网站发送的每一封邮件都被视为“myemail@gmail.com”,当我查看myemail@address.com邮箱时。

我不知道这是否是标准行为?

如何使用输入框中键入的电子邮件作为“发件人”电子邮件?

我的控制器函数如下:

    public function sendmail()
    {
        $config['mailtype'] = 'html';
        $config['protocol'] = 'smtp';
        $config['smtp_host'] = 'ssl://smtp.googlemail.com';
        $config['smtp_port'] = 465;
        $config['smtp_user'] = 'user@gmail.com';
        $config['smtp_pass'] = 'user@owrb';
        $confog['wordwrap'] = TRUE;

        $this->load->library('email', $config);
        $this->email->set_newline("\r\n");

        $this->email->from($this->input->post('from'), $this->input->post('name'));

        $this->email->to('info@keessonnema.nl');    

        $this->email->subject($this->input->post('subject'));      

        $naam = $this->input->post('name');
        $email = $this->input->post('from');
        $tel = $this->input->post('tel');
        $site = $this->input->post('site');
        $sub = $this->input->post('subject');
        $msg = $this->input->post('message');

        $this->email->message("
        <div id='email'>
        <p><b>Bedrijf:</b> <br/> $naam</p>
        <p><b>Email:</b> <br/> $email</p>
        <p><b>Tel:</b> <br/> $tel</p>
        <p><b>Website:</b> <br/> $site</p>
        <p><b>Onderwerp:</b> <br/> $sub</p>
        <p><b>Toelichting:</b> <br/> $msg</p>
        </div>
        ");

        $success = ('
        <div style="position: absolute; top: 50%; left: 50%; background-color: rgba(0,0,0,0.8);">Uw Email is succesvol verzonden!</div>
        ');

        if($this->email->send())
        {
            $this->session->set_flashdata('msg', 'Email successvol verzonden.');
            redirect('contact/index');
        }
        else
        {
            show_error($this->email->print_debugger());
        }
    }

希望有人能够提供帮助。

1个回答

2
我的猜测是Gmail限制了任意“发件人”地址。为什么?为了防止欺骗。(想象一下,如果可能的话,你可以从“big_bank@blabla.com”向任何人发送电子邮件......)
编辑:快速谷歌搜索得到了这个链接:如何在使用gmail smtp服务器时更改发件人地址 Google会重写通过SMTP服务发送的消息中的“From”和“Reply-To”头,以与您的Gmail帐户相关的值。 Gmail的SMTP功能不旨在成为开放或中继服务。如果允许任何值用于From头,它将显着削弱Google在垃圾邮件服务中的地位,因为没有办法验证发件人的凭据。
来源:https://dev59.com/G3M_5IYBdhLWcg3wjj0p#1332803 Tl;dr:你不能(使用Gmail)。

1
所以我将不得不更改我的SMTP为sendmail,例如。明天会看一下这个。非常感谢。 - Kees Sonnema

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接