【问题标题】:Sending smtp mail without smtp server installed locally在本地未安装 smtp 服务器的情况下发送 smtp 邮件
【发布时间】:2016-03-07 10:25:18
【问题描述】:

我是否应该能够在本地开发 PC 上使用 CodeIgniter 发送 SMTP 电子邮件,而无需在本地开发 PC 上安装 SMTP 服务器应用程序?

例如,以下内容不起作用。

应用程序/配置/email.php

$config['mailtype'] = 'html';
$config['protocol'] = 'smtp';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;
$config['smtp_host'] = 'ssl://smtp.gmail.com';
$config['smtp_port'] = 465;
$config['smtp_user'] = 'my_gmail_account@gmail.com';
$config['smtp_pass'] = '*********';

控制器代码

$this->load->library('email');

$this->email->from('my_gmail_account@gmail.com', 'Noel');
$this->email->to('my_gmail_account@gmail.com');
$this->email->subject('SMTP email Test');
$this->email->message('Testing smtp email in codeigniter.');
$this->email->send();

$data['message'] = "Sorry Unable to send email...";
if($this->email->send()){
  $data['message'] = "Mail sent...";
}

$this->load->view('test_view', $data);

以下返回

抱歉无法发送电子邮件...

并且没有到达目标电子邮件。

【问题讨论】:

  • 您查看过 GMail SMTP 故障排除指南吗? support.google.com/mail/answer/78775?hl=en
  • @gabe3886 - 嗨,我注意到链接是 IMAP POP 指南。 “您是否在 Gmail 中启用了 POP 或 IMAP”之类的部分?那么需要用 SMTP 发送邮件吗?
  • 另外从问题指南中,我可以在端口 465、587 上使用 telnet smtp.gmail.com 访问 gmail,但不是 25。由于我使用的是 ssl 和 465,我想这是没问题。

标签: php codeigniter


【解决方案1】:

尝试将参数加载到数组中,然后使用数组source: CodeIgniter Forum 初始化库:

$config = Array(
    'protocol' => 'smtp',
    'smtp_host' => 'ssl://smtp.googlemail.com',
    'smtp_port' => 465,
    'smtp_user' => 'xxx',
    'smtp_pass' => 'xxx',
    'mailtype'  => 'html', 
    'charset'   => 'iso-8859-1'
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");

// Set to, from, message, etc.

$result = $this->email->send();

另外,也许您需要在您的php.ini 中启用 SSL。如果你看到这条线:

;extension=php_openssl.dll

通过从行首删除分号取消注释,然后重新启动 PHP。

【讨论】:

  • 谢谢,这成功了(有点),但不是因为你给出的原因。我的代码不起作用的原因有两个,而您的代码不起作用的原因有一个(至少对我而言)。 1. 使用 google 进行 smtp 投递时,请前往 google.com/settings/security/lesssecureapps 并选择“开启”以允许安全性较低的应用程序访问(来源:wpsitecare.com/gmail-smtp-settings)。 2. $this->email->set_newline("\r\n");需要在库调用之后添加。我很高兴为您提供已接受的答案,因为在某种程度上它确实具有基本要求。
猜你喜欢
  • 2010-10-12
  • 2011-06-25
  • 1970-01-01
  • 2013-01-12
  • 2013-07-22
  • 1970-01-01
  • 2012-03-28
  • 2014-08-11
相关资源
最近更新 更多