使用 Codeigniter 在电子邮件上添加“发件人”标头

Posted

技术标签:

【中文标题】使用 Codeigniter 在电子邮件上添加“发件人”标头【英文标题】:Add 'From' Header on email using Codeigniter 【发布时间】:2020-06-13 10:35:47 【问题描述】:

我正在使用 CPanel 中的 Codeigniter,我的代码已经发送了一封邮件,但是当它到达接收者时,主机名会显示在发件人上。 我尝试了一些问题的答案:Change the sender name php mail instead of sitename@hostname.com,但在 Codeigniter 中,它们不起作用。

这是我的代码:

 $config = Array(
                'protocol' => 'ssmtp',
                'smtp_host' => 'ssl://ssmtp.googlemail.com',
                'smtp_port' => 465,
                'smtp_user' => 'mail@domainiwant.com', 
                'smtp_pass' => 'password',            
                'mailtype'  => 'html',
                'charset'   => 'iso-8859-1',
                'useragent' => 'MY NAME',
            );
            $this->load->library('email', $config); 
            $this->email->set_newline("\r\n");
            $this->email->from('mail@domainiwant.com', 'MY NAME');

            $email_to = 'receiver@gmail.com';
            $this->email->to($email_to);

            $this->email->message('Message testing ...');
            $this->email->send();

但是,正如我所说,当邮件到达收件人时,它们会显示主机名和完全不同的邮件地址,就像我放在 $config 上的邮件地址一样

我知道这只会设置the envelope sender,但我想将邮件地址设置为mail@domainiwant.com,而不是使用somemail@host.com.ex接收邮件

【问题讨论】:

您有 SMTP 服务器吗?请向服务提供商索取。 根据 CI 自己的文档,$config['protocol'] 应该设置为smtp,而不是ssmtp。由于ssmtp 不是配置中可接受的值,您的代码可能默认为mail 设置,这将尝试使用您自己的服务器作为发件人而不是使用您的SMTP 设置来传递邮件。试试看,让我知道 【参考方案1】:

根据 CodeIgniter 的电子邮件库的文档HERE,您的整个问题是一个简单的错字。

$config['protocol'] 允许将 mailsendmailsmtp 作为值。如果您不设置变量或使用不允许的值,则整个库默认为mail,它会尝试使用您自己的服务器作为邮件网关(这解释了为什么您的发件人地址显示为username@servername

将协议从 ssmtp 更改为 smtp,这样您就可以真正使用您打算使用的 Google SMTP 服务器,并且您会得到预期的结果

【讨论】:

是的,有效。我没有意识到我使用了错误的协议

以上是关于使用 Codeigniter 在电子邮件上添加“发件人”标头的主要内容,如果未能解决你的问题,请参考以下文章

在 OpenShift / PHP / CodeIgniter 上发送邮件

将表单文件附加到电子邮件,Codeigniter

在 wamp 服务器上使用 codeigniter 发送邮件时出错

使用 codeigniter 通过 gmail smtp 服务器发送电子邮件

如何更正使用 codeigniter 发送电子邮件的方式

将自定义回调添加到 Codeigniter 表单验证