it-swarm-tr.com

CodeIgniter'daki SMTP başarı gösterir ancak e-posta Gmail hesabına teslim edilmez

CodeIgniter'da SMTP kurmaya çalışıyorum. Her şey yolunda gidiyor ve sayfada başarı mesajı alıyorum, bu e-postayı hatasız olarak gönderiyor. Ancak, e-posta teslim edilmedi.

İşte kullandığım kod:

$config = Array(
'protocol' => 'smtp',
'smtp_Host' => 'ssl://smtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => '[email protected]', 
'smtp_pass' => '***', 
'mailtype' => 'html',
'charset' => 'iso-8859-1',
'wordwrap' => TRUE
);
$this->load->library('email', $config);

$this->email->from('[email protected]', 'Explendid Videos');
$this->email->to('[email protected]');
$this->email->reply_to('[email protected]', 'Explendid Videos');


$this->email->subject('Explendid Video - Contact form');

$message = "Contact form\n\n";
$message .= "Name: ". $_POST['name'] . "\n";
$message .= "Phone: ". $_POST['phone'] . "\n";
$message .= "Email: ". $_POST['email'] . "\n";

$this->email->message($message);

$this->email->send();

Sebebi ne olabilir, bu e-posta aslında teslim edilmez.

14
Wasif Khalil

Aşağıdaki gibi değiştirin:

$ci = get_instance();
$ci->load->library('email');
$config['protocol'] = "smtp";
$config['smtp_Host'] = "ssl://smtp.gmail.com";
$config['smtp_port'] = "465";
$config['smtp_user'] = "[email protected]"; 
$config['smtp_pass'] = "yourpassword";
$config['charset'] = "utf-8";
$config['mailtype'] = "html";
$config['newline'] = "\r\n";

$ci->email->initialize($config);

$ci->email->from('[email protected]', 'Blabla');
$list = array('[email protected]');
$ci->email->to($list);
$this->email->reply_to('[email protected]', 'Explendid Videos');
$ci->email->subject('This is an email test');
$ci->email->message('It is working. Great!');
$ci->email->send();
30
RobinCominotto

i̇şte benim için Apache2 sunucusunda, ci 2.1.4'te işe yarıyor: çok basit: önce application/config dizininizde email.php adında bir dosya oluşturun, sonra içine aşağıdaki kodu yazın

<?php
$config['protocol'] = 'smtp';
$config['smtp_Host'] = 'ssl://smtp.gmail.com';
$config['smtp_port'] = '465';
$config['smtp_user'] = 'u'r gmail account';
$config['smtp_pass'] = 'password of u'r account';
$config['charset'] = 'utf-8';
$config['newline'] = "\r\n";
?>

daha sonra application/controllers dizininizin altında email.php adlı bir dosya oluşturun ve sonra bu kodu yazın ~>

    <?php
    class Email extends CI_Controller
    {

    function send()
    {
    // Loads the email library
    $this->load->library('email');
    // FCPATH refers to the CodeIgniter install directory
    // Specifying a file to be attached with the email
    // if u wish attach a file uncomment the script bellow:
    //$file = FCPATH . 'yourfilename.txt';
    // Defines the email details
    $this->email->from('[email protected]', 'ur Name');
    $this->email->to('[email protected]');
    $this->email->subject('Email Test');
    $this->email->message('Testing the email class.');
    //also this script
    //$this->email->attach($file);
    // The email->send() statement will return a true or false
    // If true, the email will be sent
    if ($this->email->send()) {
    echo "you are luck!";
    } else {
    echo $this->email->print_debugger();
    }
    }

    }
    ?>
4
user2963512

değiştirmek 

$config['protocol'] = 'smtp';

için

$config['protocol'] = 'sendmail';

Aşağıdaki kodu kullanın

Ve google'da iki güvenlik ayarını takip edememek için froget etmeyin.

1) https://www.google.com/settings/security/lesssecureapps << aç

2) https://accounts.google.com/b/0/DisplayUnlockCaptcha << Devam et düğmesini tıklayın.

** Etkinleştirdiyseniz 2 adımlı doğrulamayı kapatın.

$config = Array(
        'protocol' => 'smtp',
        'smtp_Host' => 'ssl://smtp.gmail.com',
        'smtp_port' => 465,
        'smtp_user' => '[email protected]',    //email id
        'smtp_pass' => 'xxxxxxxxxxx',            // password
        'mailtype'  => 'html', 
        'charset'   => 'iso-8859-1'
    );
    $this->load->library('email', $config);
    $this->email->set_newline("\r\n");

    $this->email->from('[email protected]','my name');
    $this->email->to("[email protected]"); // email array
    $this->email->subject('email subject');   
    $this->email->message("my mail body");

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


    show_error($this->email->print_debugger());  // for debugging purpose :: remove this once it works...
0
kuma DK

Php.ini dosyanızı kontrol ettiniz mi? Dene. Eğer öyleyse, belki SPF ..__'yi de deneyebilirsiniz .. __ SPF veya Gönderen Politika Çerçevesi, spam’lerin kolayca tespit edilmesini sağlayan yeni bir teknolojidir. Bu e-postaları spam değil olarak manuel olarak işaretlemediğiniz sürece Gmail, SPF'yi kabul eder. Bundan bağımsız olarak, başka bir adrese e-posta aldıysanız, onlar da Gmail’e ulaşmış olmalıdır. Gmail, e-postaları çok yüksek spam şüphesiyle bile atmaz, bunun yerine Spam klasöründe kalmasını engeller.

Web sunucunuzun, Gmail’in web sunucunuz tarafından gönderilen e-postaları otantik olarak kabul etmesine neden olacak e-postalar göndermesine izin veren bir SPF ayarlayabilirsiniz. Bkz. http://www.mydigitallife.info/how-to-set-up-and-create-sender-policy-framework-spf-domain-dns-txt-record-with-wizard/ ve bir sihirbaz Microsoft’tan.

0
damek132

bu betiği değiştirebilir, sorununuzu ayıklayabilirsiniz

$this->email->send();

için

if($this->email->send())
{
    echo 'Your email was sent.';
}

else
{
    show_error($this->email->print_debugger());
}
0

Ben sadece RobinCominotto kodunu office365'de çalışması için değiştirdim. 

Not: Bir denetleyiciye yerleştirirken ve bu işlevi tam olarak böyle çağırırken çalışmasını sağladım. Bu yapılandırmaları email.php (config dosyası) üzerine yerleştirdiğimde artık çalışmıyor :(

    $ci = get_instance();
    $ci->load->library('email');
    $config['protocol'] = "smtp";
    $config['smtp_Host'] = "smtp.office365.com";
    $config['smtp_port'] = "587";
    $config['smtp_user'] = "<HERE COMES YOUR EMAIL>"; 
    $config['smtp_pass'] = "<HERE COMES THE PASSWORD OF EMAIL>";
    $config['charset'] = "utf-8";
    $config['mailtype'] = "html";
    $config['newline'] = "\r\n";

    $ci->email->initialize($config);

    $ci->email->from('<HERE COMES YOUR EMAIL>', 'Blabla');
    $list = array('<HERE COMES TO EMAIL>', '<HERE COMES TO EMAIL>');
    $ci->email->to($list);
    $this->email->reply_to('<HERE COMES YOUR EMAIL>', 'Explendid Videos');
    $ci->email->subject('This is an email test');
    $ci->email->message('It is working. Great!');
    $ci->email->send();
    print_r($ci->email->print_debugger());
0
Vitor Vannuchi